我们有一个带有AL32UTF8
as 字符集的数据库。我们的应用程序支持 EN、FR、DE 和 JP 语言。在每个版本中,我们都会在管理翻译的表中插入新标签。客户端应该是什么NLS_LANG
,以确保将法语特殊字符和日语正确插入数据库?
请注意,每个客户都有自己的数据库。有没有自动的方法来确保使用NLS_LANG
的是好的?我已经阅读了这篇文章,但我不知道如何实现这一点。谢谢,比莱尔
如果您必须处理日语和欧洲语言,那么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
值)。
请参阅OdbcConnection 将中文字符返回为“?” 了解更多信息。