oracle和i18n支持

oracle和i18n支持,oracle,localization,internationalization,Oracle,Localization,Internationalization,我们需要在同一数据库模式中存储不同语言的字符数据。Oracle 10g是我们的数据库。我希望已经这样做过的人能给我更多关于如何启用oracle 10g db的具体说明。我们只需要存储来自多个地区的数据以及数据库级别的排序(希望所有主要数据库都支持此功能)。我们不需要日期、日期时间、数字、货币等的格式 我读了一些关于oracle i18n支持的文档,但对它们的许多nls属性有些困惑。我是否应该使用nls_lang或nls_language或nls_CHARACTERSET…..假设您是从头开始构建

我们需要在同一数据库模式中存储不同语言的字符数据。Oracle 10g是我们的数据库。我希望已经这样做过的人能给我更多关于如何启用oracle 10g db的具体说明。我们只需要存储来自多个地区的数据以及数据库级别的排序(希望所有主要数据库都支持此功能)。我们不需要日期、日期时间、数字、货币等的格式


我读了一些关于oracle i18n支持的文档,但对它们的许多nls属性有些困惑。我是否应该使用nls_lang或nls_language或nls_CHARACTERSET…..

假设您是从头开始构建数据库,而不是试图改造现有数据库,从而导致其他问题

在数据库中,需要确保数据库字符集支持要存储的所有字符。这可能意味着将数据库的NLS_字符集设置为AL32UTF8。就个人而言,我更喜欢将NLS_LENGTH_语义设置为CHAR。这将更改VARCHAR2(n)的默认行为,以分配n个字符的存储,而不是n个字节。由于AL32UTF8是一个可变长度字符集,使用字节语义通常是有问题的,因为您要么必须声明长度为3倍的字段,要么最终导致不同的用户能够在同一字段中输入不同数量的字符


NLS_LANG是一种客户端设置。它标识客户端将请求将数据转换为的字符集。这通常取决于操作系统的代码页。

thx以获得清晰的答案。如果AL32UF8是什么意思。这和UTF8不同吗?谢谢。更多详细信息,请访问我尝试设置“NLS_LANG=AMERICAN_AMERICA.AL32UTF8”,但返回错误“ORA-12705:指定的NLS参数值无效或未知”,我能够修复此问题。以下是为其他人提供的正确设置:NLS_LANG=American_America.AL32UTF8。注意NLS_LENGTH_SEMANTICS=CHAR。有些程序不能很好地使用它。Crystal Reports的服务器端安装就是一个例子。在使用此属性创建对象后登录时会引发错误。