[系統] OCI操作Oracle中文亂碼問題
資料庫名稱:Oracle
資料庫版本:11.2g 64bit
作業平台:windows
問題描述:
目前用C++使用OCI控制oracle,發現新增的varchar中文都會變亂碼
oracle server部分確定 NLS_LANG是 TRADITIONAL CHINESE_TAIWAN.ZHT16MS950
目前測試結果:
1.在client端設定環境變數 NLS_LANG TRADITIONAL CHINESE_TAIWAN.ZHT16MS950
會正常,但不是我要的,且我想要能立即切換的solution。
2.把程式丟到server安裝目錄的bin會正常,後來測試完是放了一個oracle.key的檔案
就會好,裡面描述了機碼中nlc_lang的位置,但我希望使用者不用安裝server
或OracleClient,且同上一點,也不太想用改機碼的方式調整。
3.參照這篇:
https://docs.oracle.com/cd/A84870_01/doc/server.816/a76966/ch2.htm
似乎還有兩招優先權比環境變數高
(A) Explicitly set in SQL functions
(B) Set by an ALTER SESSION statement
目前試過B,在連線後,執行SQL
我試著在 連線後,insert前執行以下SQL都看不太出效果
"ALTER SESSION SET NLS_LANGUAGE = 'TRADITIONAL CHINESE_TAIWAN'"
or
"ALTER SESSION SET NLS_LANGUAGE = 'TRADITIONAL CHINESE'"
"ALTER SESSION SET NLS_CHARACTERSET = 'ZHT16MSWIN950'"
等皆無效。
不知是否有人能提供 對本次連線明確指定字符集的方式呢?
或是 (A) 應該在SQL加什麼?
感謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.127.198.208
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1454125289.A.0E7.html
→
02/19 16:51, , 1F
02/19 16:51, 1F
Database 近期熱門文章
PTT數位生活區 即時熱門文章