偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Oracle字符集配置配合rails的實際運用

數(shù)據(jù)庫 Oracle
本文主要描述的是,Oracle字符集配置在運行的過程中都需要哪些相關的條件,以及相關實際代碼的描述,以下就是正文的主要內(nèi)容。

以下的文章主要講述的是如何配合rails的Oracle字符集配置,其中包括Oracle字符集配置先決條件的介紹,還有可變的條件的相關介紹,你如果對其相關的操作感興趣的話,以下的文章,你一定不要錯過。

Oracle中文字符顯示的問題

rails2..02 中對頁面表單提交,單個中文字的問題

 

 

Rails默認的設置適合于MySQL,但我的工作環(huán)境往往是Oracle,于是需要針對Oracle重新進行配置。

 

下載和安裝Oralce Rails庫,需要給Rails應用所在的服務器安裝Oracle的客戶端;

更改config/database.yml文件,基本的配法如下:

 

ruby 代碼

 

 

  1. Oracle:   
  2. adapter: oci   
  3. username: rails   
  4. password: rails   
  5. host: 10.11.16.63/ORCL 

 

 

相信用過Oracle的人都很容易理解上面的字段和格式的含義。另外說一下,冒號后一定要留一個空格,否則在執(zhí)行ruby script/server時就會報錯。

基本連接的配置就是這樣了,但對一個中國的開發(fā)人員來說,通常情況下,新的框架、新的數(shù)據(jù)庫配置一般會帶來字符編碼的問題。

Oracle字符集配置

先絕條件1: Rails默認使用UTF-8字符集保存文件,暫時不考慮修改成GBK。

 

先絕條件2: Oralce服務器使用AMERICAN _ AMERICA.zhs16gbk編碼,是一個公共的開發(fā)環(huán)境,因此除非迫不得已,不考慮對編碼進行調(diào)整。

可變的條件: Rails應用所在服務器的Oracle客戶端字符集,當前也是ZHS16GBK,但可以調(diào)整。

按照現(xiàn)在的配置,運行rails,進行中文信息的填寫、提交、顯示。發(fā)現(xiàn)不錯,在web上顯示的一切正常。但是,用常用的toad登錄Oralce,一看全部顯示亂碼。即使用Oracle自帶的那個java寫的客戶端連上去,也是顯示亂碼。

有的帖子里面寫了把客戶端的nls_lang設置的和服務器一樣,就能解決亂碼問題。前面的條件也符合這種要求,web上的顯示也確實正確。但是數(shù)據(jù)庫客戶端顯示不正常,顯然不讓人接受,以后萬一要導數(shù)據(jù)等等,那就會麻煩很多。

于是開始嘗試各種解決辦法,直到看見了這篇關于Oracle字符集的文章,才算豁然開朗。

 Oracle字符集配置問題其實牽涉到3個概念:操作系統(tǒng)字符集(輸入/顯示),客戶端字符集,數(shù)據(jù)庫字符集。

"客戶端字符集就是為了讓數(shù)據(jù)庫知道我們傳遞過去的字符是屬于那種字符集,以便于Oracle在存儲字符(數(shù)據(jù)庫字符集)時做相應的編碼映射。" 操作系統(tǒng)字符集其實就是輸入/顯示的字符,在rails中輸入就是就是rails提交的編碼,顯示則是由瀏覽器根據(jù)編碼進行解析.

簡單地說,先決條件1就是輸入字符集,先決條件2就是數(shù)據(jù)庫字符集,而可變的條件就是客戶端字符集。之前,在客戶端和數(shù)據(jù)庫端都是ZHS16GBK的情況下,web能成功顯示,是因為保存和取出的都是utf-8編碼的字符,而數(shù)據(jù)庫自己查看失敗就在于在nls_lang=ZHS16GBK的情況下,無法正確解析實際是按utf-8存放的內(nèi)容。

簡單地把客戶端字符集設置和數(shù)據(jù)庫一致,僅僅實現(xiàn)了數(shù)據(jù)(按utf-8編碼)的透傳。而真的要讓數(shù)據(jù)在庫中以數(shù)據(jù)庫字符集編碼形式保存,需要將客戶端字符集改成和輸入字符集一致的字符集。因此,如果Rails輸入的信息是UTF-8,那么應該將Rails應用服務器的Oracle客戶端設置成 nls_lang=UTF8。

如此的話,客戶端字符集讓數(shù)據(jù)庫知道我們傳遞過去的字符是屬于哪種字符集,以便于Oracle在存儲字符時做相應的編碼映射,這樣數(shù)據(jù)就按數(shù)據(jù)庫字符集被保存了。

***還要說的一個問題,就是nls_lang=AMERICAN_AMERICA.UTF8在哪里進行設置。

在windows下,可以在注冊表下以及dos窗口里面設置。在注冊表下設置的話,除影響Rails外,還會影響toad以及Oracle自帶的客戶端。而此時,web一切正常,Oracle自帶的客戶端查看數(shù)據(jù)也正常,但是toad的顯示還是不正常。

換成在啟動Rails前先執(zhí)行 set nls_lang=AMERICAN_AMERICA.UTF8 ,這樣把影響局限在Rails應用中,注冊表中依舊采用ZHS16GBK,那么web、toad、Oracle自帶客戶端就全都正常了。更進一步,set nls_lang=AMERICAN_AMERICA.UTF8 可以放入rails目錄下的use_ruby.cmd,這樣就會自動設置這個變量了。

 綜上所述,對于Rails來說,如果選擇按UTF8來進行數(shù)據(jù)的傳遞,那么只要存入/獲取的數(shù)據(jù)都是UTF8編碼的,在web上就能一切正常。透傳的話不影響Rails的正常工作,但保存數(shù)據(jù)的字符集就未必是數(shù)據(jù)庫的字符集了。

客戶端字符集變量的作用就是告訴數(shù)據(jù)庫傳的信息是按什么編碼的,然后數(shù)據(jù)庫就能做相應的轉換,按數(shù)據(jù)庫自己的字符集進行存放,而在取出時也能做相應的轉換。所以說,需要將客戶端字符集改成和輸入字符集一致。

【編輯推薦】

  1. Oracle數(shù)據(jù)庫緩沖區(qū)命中率的概述
  2. Oracle 權限入門如何管理
  3. Oracle索引整理的詳細描述
  4. Oracle創(chuàng)建Split 與Map 函數(shù)的代碼示例
  5. Oracle 字符串split的相關實際應用代碼介紹

     

     

 

責任編輯:佚名 來源: 互聯(lián)網(wǎng)
相關推薦

2010-04-13 12:23:34

Oracle數(shù)據(jù)庫

2010-04-13 13:33:37

Oracle字符集

2011-04-11 10:59:33

Oracle字符集

2011-04-11 11:05:12

Oracle字符集

2010-04-30 10:16:22

Oracle字符集

2009-11-20 16:52:35

Oracle字符集

2011-05-20 13:24:39

oracle字符集

2010-05-25 13:57:28

MySQL字符集

2010-04-28 17:29:07

Oracle字符集

2009-07-29 13:42:04

Oracle中文顯示

2010-05-06 14:40:59

Oracle字符集

2010-04-13 12:32:38

Oracle字符集

2010-05-06 18:01:07

Oracle Expr

2010-04-13 13:11:34

Oracle漢字顯示

2010-04-13 12:56:16

Oracle字符集

2010-04-27 13:21:58

Oracle數(shù)據(jù)字符集

2010-04-13 11:35:26

Oracle字符集

2010-04-21 09:49:10

Oracle數(shù)據(jù)庫字符

2010-04-23 10:18:42

Oracle數(shù)據(jù)庫字符

2010-04-13 13:24:04

Oracle數(shù)據(jù)庫
點贊
收藏

51CTO技術棧公眾號