環境:db 11gr2 db 字符集UTF8
oracle client端9.2.0.1
os 繁體xp
os regeidt nls_lang=american_america.utf8
注:1.DB是由9.2.0.1升級至11.2.0.3 ;
2.字符集由ZHT16BIG5轉碼至UTF8(使用expdp/impdb方式)
現象:使用TOAD select * from ET_LESSON_SECTION_FILES---升級前的漢字顯示正常,升級后新插入漢字顯示亂碼
toad 可通過如下轉碼作業正常顯示升級后新插入漢字:select convert(file_name,'utf8','zht16big5') from ET_LESSON_SECTION_FILES
使有pl/develop select * from ET_LESSON_SECTION_FILES---升級前后漢字均正常顯示
使有sqlplus set nls_lang=american_america.utf8 select * from ET_LESSON_SECTION_FILES---升級前的漢字顯示亂碼,升級后新插入漢字顯示正常
使有sqlplus set nls_lang=american_america.zht16big5 select * from ET_LESSON_SECTION_FILES---升級前的漢字顯示正常,升級后新插入漢字顯示亂碼
用戶WEB 顯示也亂碼
原因: 所插入漢字是經由Delphi工具代碼插入,連接DB字符集由原ZHT16BIG5改為UTF8(如果改回原zht16big5則程式應用報錯)
解法:在Delphi程式使用轉碼函數,即
file_name := AnsiToUtf8(edFileName.Text);
這樣所插入漢字在TOAD工具中則可正常顯示(應用也恢復正常)