paulwong

          關于特殊字符的一些總結

          最近做一個項目,里面很多特殊字符,引發了一些問題,解決后很開心,特別來分享。
          特殊字符:
          Jörg Ranau
          Sigut? Jakštonyt?
          Côte d'Ivoire

          數據庫手工導入數據
          1. 先檢查數據庫的字符集和客戶端字符集是否一致。 采用的是UTF8 查看語句:
            select * from nls_database_parameters

          2.  若是采用DOS 下的SQLPLUS 導入數據,需要
            set NLS_LANG=AMERICAN_AMERICA.UTF8
            windows:    
            set NLS_LANG=AMERICAN_AMERICA.UTF8
            unix:    NLS_LANG
            =AMERICAN_AMERICA.UTF8

          3. 檢查導入的數據的文件格式,格式采用: UTF8 without BOM, 
            可以用NOTEPAD++, CONVER TO UTF8 without BOM
            也可以用txt , 轉換成UTF8.
            第3點非常重要,之前忽略了,發現插入導入數據庫后,數據顯示不對。 驗證你導入的數據是否正確可以用ORACLE DUMP 命令。
            select dump(country_desc),country_desc  from tb_test  where testcode='1';
            Typ=1 Len=14: 67,195,180,116,101,32,100,39,73,118,111,105,114,101        Côte d'Ivoie
          數據庫腳本中遇到特殊字符:

          1. 單引號‘ , oracle 腳本需要寫成 兩個單引號
          2. 特殊字符&, oracle 表示需要的參數, 若是數據中有這個有2個方法:
            第1 種:
            set define off;
            第2種:
            set escape on;

            然后將所有的&, 替換成/&。
          3. 空行
            用<br> 代替。
          JAVA 代碼導入數據:

          要導入的數據都放在TXT 類型的文件里,通過batch job 導入數據庫。
          檢查導入的數據的文件格式,格式采用: UTF8 without BOM,  可以用NOTEPAD++, CONVER TO UTF8 without BOM

          java 代碼:

          1: 讀文件
          InputStreamReader read = new InputStreamReader (new FileInputStream(file),"UTF-8");
          BufferedReader inBuf
          =new BufferedReader(read); 

          2: 檢查所用開發工具的文件ENCODING 字符。

          這個就是會為什么導致沒發現:
          讀文件錯誤,在開發工具中打出的LOG 欺騙了我們的眼睛。我的開發工具BEA 里JAVA 文件默認ENCODING cp1252, 改成UTF8 就好了。

          這個特別容易忽略,當在控制臺看LOG的時候,發現讀過來的文件里的內容打出來都正確,就忽略了JAVA的源文件。認為是從unicode轉換 utf8 有問題,特別將字符又做了處理,發現插入數據庫還是不正確。

          修改了ENCODING 字符字符后發現讀入文件就不對了。這樣輕松就解決了。

          所以只要修改了讀文件的時候采用 UTF8格式就可以啦。

          posted on 2011-05-22 11:28 paulwong 閱讀(312) 評論(0)  編輯  收藏 所屬分類: J2EE

          主站蜘蛛池模板: 靖江市| 新和县| 阿勒泰市| 益阳市| 丰顺县| 鹿邑县| 喀喇沁旗| 四平市| 独山县| 额尔古纳市| 五常市| 开江县| 伊金霍洛旗| 措勤县| 武安市| 洪江市| 合水县| 且末县| 凤庆县| 留坝县| 昌都县| 温宿县| 师宗县| 临沭县| 平遥县| 和顺县| 惠州市| 惠安县| 铜鼓县| 宕昌县| 汉寿县| 巍山| 万年县| 东光县| 吉木萨尔县| 灵宝市| 拜泉县| 保靖县| 营山县| 堆龙德庆县| 长乐市|