我遇到了严重的字符编码问题。给一些背景:西班牙语字符集到土耳其语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