我在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
甲骨文称“会议改变了”,但没有任何改变。
有人可以帮助我吗?
答案 0 :(得分:1)
在Windows中:不要使用Windows字体(例如在Windows应用程序中使用的字体,例如SQL Developer中的字体)将命令外壳/命令提示符(在Windows下)中使用的字体搞乱。 如果您希望在命令提示符下的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
答案 1 :(得分:0)
您是否在注册表中将NLS_LANG设置为.EL8MSWIN1253
(注意前缀点)?
NLS_LANG的格式是:
NLS_LANG = language_territory.charset
...而Oracle® Database Globalization Support Guide manual写道:
NLS_LANG的所有组件 定义是可选的;任何项目 未指定使用其默认值 值。 如果您指定领土或 字符集,然后你必须包括 前面的分隔符 [下划线 (_)为领土,期间(。)为 字符集]。否则,价值 被解析为语言名称。
答案 2 :(得分:0)
只是指出字符集转换发生两种方式。因此,如果客户端在其数据库会话指示美国字符集时插入“希腊”字符,则该字符将从美国转换为UTF-8(或任何数据库字符集)。随后通过具有希腊字符集的会话进行选择将导致将字符从UTF-8转换为希腊语,这可能不是您开始使用的。
使用select DUMP(col)
查看数据库中记录的字节数,然后您可以确定数据库是否具有正确的字符表示形式。
答案 3 :(得分:0)
右键单击我的电脑>预先系统设置>提前>环境变量
单击New TAB上的System变量
变量名称:NLS_LANG 变量值:GREEK_GREECE.EL8MSWIN1253
变量名称:NLS_NUMERIC_CHARACTERS 变量值:。,