设置 NLS_LANG

Set the NLS_LANG

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

请注意,每个客户都有自己的数据库。 有什么自动方法可以确保使用的 NLS_LANG 是好的吗? 我已经读过 this article 但我不知道如何才能做到这一点。 谢谢, 比莱尔

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

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

请注意,当您设置 NLS_LANG=.AL32UTF8 值时,您会告诉 Oracle 数据库:"My client application uses characters set AL32UTF8 (a.k.a. UTF-8)" - 不多也不少。

这并不意味着您的客户端应用程序真的使用 UTF-8,很多时候您必须在某些设置中明确指定它(但是有些应用程序和驱动程序会自动遵循 NLS_LANG 值) .

有关详细信息,请参阅