關(guān)于特殊字符的一些總結(jié)
最近做一個(gè)項(xiàng)目,里面很多特殊字符,引發(fā)了一些問(wèn)題,解決后很開(kāi)心,特別來(lái)分享。特殊字符:
Jörg Ranau
Sigut? Jakštonyt?
Côte d'Ivoire
數(shù)據(jù)庫(kù)手工導(dǎo)入數(shù)據(jù)
- 先檢查數(shù)據(jù)庫(kù)的字符集和客戶(hù)端字符集是否一致。 采用的是UTF8 查看語(yǔ)句:
select * from nls_database_parameters
- 若是采用DOS 下的SQLPLUS 導(dǎo)入數(shù)據(jù),需要
set NLS_LANG=AMERICAN_AMERICA.UTF8
windows: set NLS_LANG=AMERICAN_AMERICA.UTF8
unix: NLS_LANG=AMERICAN_AMERICA.UTF8
- 檢查導(dǎo)入的數(shù)據(jù)的文件格式,格式采用: UTF8 without BOM,
可以用NOTEPAD++, CONVER TO UTF8 without BOM
也可以用txt , 轉(zhuǎn)換成UTF8.
第3點(diǎn)非常重要,之前忽略了,發(fā)現(xiàn)插入導(dǎo)入數(shù)據(jù)庫(kù)后,數(shù)據(jù)顯示不對(duì)。 驗(yàn)證你導(dǎo)入的數(shù)據(jù)是否正確可以用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
- 單引號(hào)‘ , oracle 腳本需要寫(xiě)成 兩個(gè)單引號(hào)
- 特殊字符&, oracle 表示需要的參數(shù), 若是數(shù)據(jù)中有這個(gè)有2個(gè)方法:
第1 種:第2種:set define off;
set escape on;
然后將所有的&, 替換成/&。 - 空行
用<br> 代替。
要導(dǎo)入的數(shù)據(jù)都放在TXT 類(lèi)型的文件里,通過(guò)batch job 導(dǎo)入數(shù)據(jù)庫(kù)。
檢查導(dǎo)入的數(shù)據(jù)的文件格式,格式采用: UTF8 without BOM, 可以用NOTEPAD++, CONVER TO UTF8 without BOM
java 代碼:
1: 讀文件



2: 檢查所用開(kāi)發(fā)工具的文件ENCODING 字符。
這個(gè)就是會(huì)為什么導(dǎo)致沒(méi)發(fā)現(xiàn):
讀文件錯(cuò)誤,在開(kāi)發(fā)工具中打出的LOG 欺騙了我們的眼睛。我的開(kāi)發(fā)工具BEA 里JAVA 文件默認(rèn)ENCODING cp1252, 改成UTF8 就好了。
這個(gè)特別容易忽略,當(dāng)在控制臺(tái)看LOG的時(shí)候,發(fā)現(xiàn)讀過(guò)來(lái)的文件里的內(nèi)容打出來(lái)都正確,就忽略了JAVA的源文件。認(rèn)為是從unicode轉(zhuǎn)換 utf8 有問(wèn)題,特別將字符又做了處理,發(fā)現(xiàn)插入數(shù)據(jù)庫(kù)還是不正確。
修改了ENCODING 字符字符后發(fā)現(xiàn)讀入文件就不對(duì)了。這樣輕松就解決了。
所以只要修改了讀文件的時(shí)候采用 UTF8格式就可以啦。
posted on 2011-05-22 11:28 paulwong 閱讀(314) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): J2EE