我对oracle 11g中的希腊字符有问题。它只显示一些希腊字符和所有其他带有'?‘的字符。我已经做了上面所有的事情,我在互联网上找到了,但不能解决这个问题。
我使用win vista (rus/eng版本)并设置希腊语mui。我已经将注册表中的NLS_LANG更改为EL8MSWIN1253 (我已经更改了),我的系统nls_lang在注册表中也是1253。
当我调用时:
SELECT * FROM NLS_INSTANSE_PARAMETERS
我得到了NLS_LANGUAGE=AMERICAN
和NLS_TERRITORY=AMERICA
。我使用Unicode字符集设置oracle。
我试着给你打电话
ALTER SESSION SET NLS_LANG=GREEK_GREECE.EL8MSWIN1253
但这并不管用。当我打电话的时候
ALTER SESSION SET NLS_LANGUAGE=GREEK
或
ALTER SESSION SET NLS_TERRITORY=GREECE
甲骨文说“会话改变了”,但什么也没改变。
有谁能帮帮我吗?
发布于 2018-04-06 17:41:28
在Windows中:不要将Command Shell / Command prompt (在Windows下)中使用的字体与Windows字体(例如,Windows应用程序中使用的字体,如SQL Developer中的字体)混淆。如果希望在命令提示符下的SQL*Plus下正确显示希腊字符:
标识活动代码页:
C:\> chcp
系统应使用代码页号进行响应。对于希腊语,这应该是:
活动代码页: 737
737对应于EL8PC737 Oracle客户端字符集(NLS_LANG的第3部分)。请访问:http://www.oracle.com/technetwork/database/database-technologies/globalization/nls-lang-099431.html#_Toc110410555
设置Oracle NLS环境变量:
C:\> set NLS_LANG= GREEK_GREECE.EL8PC737
现在登录SQL*Plus,您将能够在查询结果中正确地看到希腊字符。
对任何其他国家的语言进行类似的设置。
Panos Zafiropoulos
发布于 2011-05-18 22:41:11
您是否在注册表中将NLS_LANG设置为.EL8MSWIN1253
(请注意前缀.)?
NLS_LANG的格式如下:
NLS_LANG = language_territory.charset
...and Oracle® Database Globalization Support Guide manual写道:
NLS_LANG定义的所有组件都是可选的;任何未指定的项都使用其缺省值。如果指定区域或字符集,则必须包括区域的前面分隔符下划线(_),句点(.)对于字符集。否则,该值将被解析为语言名称。
发布于 2011-05-19 07:41:30
只是为了指出字符集转换是双向发生的。因此,如果客户端在其数据库会话指示美国字符集时插入一个“希腊”字符,则该字符将从UTF转换为-8(或任何DB字符集)。使用希腊语字符集的会话随后进行的select操作将导致字符从UTF-8转换为希腊语,这可能与您开始时不同。
使用select DUMP(col)
查看记录在数据库中的字节,然后可以判断数据库是否具有字符的正确表示。
https://stackoverflow.com/questions/6046384
复制相似问题