[系統] OCI操作Oracle中文亂碼問題

看板Database (資料庫)作者 (laguna@HEADSHOT)時間8年前 (2016/01/30 11:41), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
資料庫名稱: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
檢查傳輸字串中文碼是否為BIG5碼,可能傳送的中文碼是UTF-8
02/19 16:51, 1F
文章代碼(AID): #1Mh33f3d (Database)
文章代碼(AID): #1Mh33f3d (Database)