我遇到了嚴重的字符編碼問題。給一些背景:西班牙語字符集到土耳其語sql
- 我有在土耳其語言的Unix屏幕上輸入一些數據的土耳其商業用戶。
- 我的數據庫NLS參數設置爲
AMERICAN
,WE8ISO8859P1
和UnixNLS_LANG
至AMERICAN_AMERICA.WE8ISO8859P1
。 - 土耳其的企業能夠看到UNIX屏幕和蟾蜍所有的土耳其字符,而我不是。我只能在西歐字符集中看到它們。
在營業結束:ÖZER İNŞAAT TAAHHÜT VE
在我們結束:ÖZER ÝNÞAAT TAAHHÜT VE
如果您發現土耳其字符İ
和Ş
越來越轉換爲ISO 8859-1字符集。但是,所有設置(db和unix中的NLS參數)在兩端都是相同的 - ISO8859-1
(西歐)
通過一些研究,我可以理解 - 土耳其機器可以通過實時轉換顯示土耳其數據( DB NLS設置由本地NLS設置覆蓋)。
現在,我有一個接口,在我的DB-運行有一定的PL/SQL腳本(通過shell腳本運行),從數據庫中提取一些數據,並將它們脫機到UNIX路徑上的.csv文件。然後,.csv文件通過MFT(託管文件傳輸)傳輸到外部系統。
的問題是 - Exract從未conains任何土耳其語字符。每個土耳其角色都被轉換成西歐文字,並且像這樣進入外部系統,這被視爲數據轉換/丟失的情況,我的業務真的很不愉快。
誰能告訴我 - 我怎麼會保留所有的土耳其字符?
P.S. :外部系統的字符集可以設置爲ISP8859-9字符集。
非常感謝提前。
感謝您的專家意見。但由於某些限制,我無法更改我的db nls_characterset參數。有沒有辦法通過在unix shell中設置nls_lang或locale來發送這些字符? 因爲我已經嘗試將'NLS_LANG'設置爲''TURKISH_TURKEY.WE8ISO8859P9',但它似乎已經給出了'?'(問號)而不是土耳其文字符,即使文件已被MFT選中併發送到外部系統。 – prashant1988