国际化和 NLS 参数



我正在努力理解国际化支持,字符集编码&Oracle产品中的转换。不幸的是,我读得越多,脑海中浮现出的困惑就越多。我希望得到你的帮助。

以下是我的问题:

1.)有人能一步一步地向我解释一下客户;服务器在考虑NLS参数&字符集转换?我知道网上有这样的话题,但对我来说还不够清楚

2.)如果我是正确的,在服务器和客户端是单独的机器的情况下,NLS_LANG必须分别在两者上设置?

3.)如何在服务器机器上设置NLS_LANG?这和客户端上的方式一样吗?

4.)在Orcale分支的注册表中、在系统变量中(使用控制面板)和通过命令行中的"设置"命令设置NLS_LANG有什么区别?

5.)如何进行chasset转换?我在某个地方读到"如果客户端和服务器上的字符集相同,Oracle会直接存储客户端提交的任何内容。不涉及转换"那么,是否存在类似"服务器上的NLS_LANG"与"客户端上的NLS_LANG"或棘轮式"服务器上NLS_LANGUAGE"与"客户机上NLS_RANG"的比较?

6.)情况是什么:服务器将其NLS信息(NLS_LANG或NLS_LANGUAGE?

7.)转换在哪里进行?在客户端系统或服务器上?

感谢您提前提供的帮助!:-)

NLS_LANG应设置为客户端应用程序的字符集。这通常是操作系统使用的字符集。对我来说(荷兰语)Windows使用的是Windows 1252编码,所以我在客户端上将NLS_LANG设置为WE8MSWIN1252。

1) 对不起,一步一步的解释将是一个很长的故事,只是另一个主题

2) 当您直接在服务器上运行SQL*Plus时,仅使用服务器NLS_LANG。在这种情况下,服务器就像任何其他客户端一样。

3) 请参阅2),大多数时候服务器上的NLS_LANG是不相关的。

4) 我不确定确切的优先级,但我相信"SET"命令行是最强的。如果未设置,则使用控制面板环境变量。当这些不存在时,使用注册表,最后,当注册表为空时,使用US7ASICI。

5) 在客户端的NLS_LANG和服务器的NLS_CHARACTERSET之间进行比较。后者可以用CCD_ 1进行验证。

6) 请参阅7,服务器的NLS_CHARACTERSET被发送到客户端,也可以通过其他方式发送。

7) 我曾经读到,如果客户端上有合适的转换表,那么转换就是在客户端完成的。如果没有足够的可用信息,则在服务器上进行转换。

最新更新