特殊字符:
Jörg Ranau
Sigut? Jakštonyt?
Côte d'Ivoire
數(shù)據(jù)庫手工導(dǎo)入數(shù)據(jù)
1: 先檢查數(shù)據(jù)庫的字符集和客戶端字符集是否一致。 采用的是UTF8
查看語句:
select * from nls_database_parameters
2: 若是采用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
3: 檢查導(dǎo)入的數(shù)據(jù)的文件格式,格式采用: UTF8 without BOM,
可以用NOTEPAD++, CONVER TO UTF8 without BOM
也可以用txt , 轉(zhuǎn)換成UTF8.
驗證你導(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'Ivoire
數(shù)據(jù)庫腳本中遇到特殊字符:
1: 單引號‘ , oracle 腳本需要寫成 兩個單引號
UPDATE pi_portal_nday SET ND_CTY='Côte d'‘Ivoire' WHERE ND_ID IN (152,162);
2: 特殊字符&, oracle 表示需要的參數(shù), 若是數(shù)據(jù)中有這個有2個方法:
第1 種: set define off;
第2種:
set escape on;
然后將所有的&, 替換成/&。
3: 空行
用<br> 代替。
JAVA 代碼導(dǎo)入數(shù)據(jù):
要導(dǎo)入的數(shù)據(jù)都放在TXT 類型的文件里,通過batch job 導(dǎo)入數(shù)據(jù)庫。
檢查導(dǎo)入的數(shù)據(jù)的文件格式,格式采用: UTF8 without BOM,
可以用NOTEPAD++, CONVER TO UTF8 without BOM
java 代碼:
1: 讀文件的時候采用 UTF8格式。
InputStreamReader read = new InputStreamReader (new FileInputStream(file),"UTF-8");
BufferedReader inBuf=new BufferedReader(read);
2: 檢查所用開發(fā)工具的文件ENCODING 字符。
這個就是會為什么導(dǎo)致沒發(fā)現(xiàn): 讀文件錯誤,在開發(fā)工具中打出的LOG 欺騙了我們的眼睛。
JAVA 代碼中直接賦值的或是頁面錄入的。
1: 頁面的就很簡單了,JSP 或是HTML ,里面加入字符是UTF8的就OK
2: 代碼里面的,需要轉(zhuǎn)換:
byte[] byteArr1 = columnValueBe.getBytes("UTF-8");
columnValue = new String(byteArr1, "UTF-8");