设置NLS_LANG

时间:2019-04-03 14:58:03

标签: oracle utf-8 nls-lang

我们有一个AL32UTF8作为字符集的数据库。我们的应用程序支持EN,FR,DE和JP语言。在每个版本中,我们将新标签插入管理翻译的表中。客户端的NLS_LANG应该是什么,以确保将法语特殊字符和日语正确插入数据库?

请注意,每个客户端都有自己的数据库。 是否有任何自动方法来确保用过的NLS_LANG是好的? 我已经读过this article,但不知道如何实现。 谢谢, 胆汁

1 个答案:

答案 0 :(得分:2)

如果您必须使用日语和欧洲语言,那么AL32UTF8(即UTF-8)实际上是唯一有用的选项。

链接的文章有一些缺陷,例如,在Windows操作系统上为“ ...,那么您不应该在NLS_LANG参数中将AL32UTF8设置为客户端字符集,因为没有UTF-8 WIN32客户端”,这是错误的,如今几乎每个Windows客户端都支持UTF-8。您用来写入*sql文件的每个文本编辑器都支持UTF-8,而当您使用普通sql * Plus时,一个简单的chcp 65001命令就使其成为UTF-8。仅Microsoft古老且已弃用的驱动程序不支持Unicode。

请注意,当您设置NLS_LANG=.AL32UTF8值时,您会告诉Oracle数据库:“我的客户端应用程序使用字符集AL32UTF8(又称为UTF-8)字符集”-不多也不少。

这并非自动表示您的客户端应用程序确实在使用UTF-8,很多时候您必须在某些设置中明确指定它(但是有些应用程序和驱动程序会自动遵循NLS_LANG值)。 / p>

有关更多信息,请参见OdbcConnection returning Chinese Characters as "?"