Oracle XE Character set ZHT16MSWIN950 問題 |
缺席
|
herbert2
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
XE Server 安裝於 Windows Server,NLS_LANG 自動設為 TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950。
照理說,ZHT16MSWIN950 之中文字,每字應是16 Bit;但 SELECT LENGTHB('台北市中山區') FROM DUAL 卻得 18 而非 12?! INSERT INTO ZipCode VALUES('104','台北市中山區') 會得 ORA-12899 超長的 Error (VARCHAR2(14) 無法填入6個中文字)! 經將 Server 之 Character set 改為 ZHT16BIG5 則似忽變正常,6個中文字之 LENGTHB() 為 12。 但如此一來,進 iSQL*Plus 時,系統的中文字就都變亂碼了! 可是,Client 端於 SQL*Plus 故意執行錯誤的 SQL,卻出現正確的中文訊息,真令人搞不懂! 不知道 Oracle 10g Patch 前、後,是否也有同樣的問題? |
herbert2
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
GrandRURU
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
真是漫長的測試過程...謝謝分享
有嚐試過在ZHT16MSWIN950環境下採用支援Unicode iSQL*plus嗎? 另外,這篇或許對你有幫助 引用部分資料: In a client server configuration the conversion is based on the database character set. So when your data is not a subset of the database character set it cannot be converted and ends up as replacements characters in your NCHAR columns. This has been addressed in 10gR2. You can use the UNISTR function to enter the data as Christian mentioned in the other thread. Note that SQL*PLUS is not going to be able to display Greek data if the OS locale does not support Greek. iSQL*PLUS can be used to display multilingual data. ===================引 用 herbert2 文 章=================== 經反覆用不同的 NLS_LANG 環境變數重裝測試,及安裝 10g 10.2.0.3 測試, 證實 ZHT16MSWIN950 之中文每字 2 Byte 且支援 User 造字, Oracle XE Universal 版 for Taiwan 之安裝有 BUG, 只能於安裝後修改 NLS_CHARACTERSET, 但如此一來,iSQL*Plus 就無法使用了。
編輯記錄
GrandRURU 重新編輯於 2010-10-24 18:25:37, 註解 無‧
|
herbert2
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |