0

我正在尝试了解 Oracle 产品中的国际化支持、字符集编码和转换。不幸的是,我读到更多的困惑出现在我的脑海中。我希望得到你的帮助。

以下是我的问题:

1.) 考虑到 NLS 参数和字符集转换,有人可以逐步解释客户端和服务器如何相互通信吗?我知道网上有这样的话题,但对我来说还不够清楚。

2.)如果我是正确的,在服务器和客户端是不同机器的情况下,NLS_LANG 必须分别设置吗?

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

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

5.) 字符集转换是如何完成的?我在某处读过“如果客户端和服务器上的字符集相同,Oracle 直接存储客户端提交的任何内容。不涉及转换”所以有没有像“服务器机器上的 NLS_LANG”与“客户端机器上的 NLS_LANG”还是“服务器机器上的 NLS_LANGUAGE”与“客户端机器上的 NLS_LANG”?

6.) 是什么情况:服务器将它的 NLS 信息(NLS_LANG 或 NLS_LANGUAGE?)发送到客户端或 ratcher clinet 向服务器发送 NLS_LANG 设置?

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

提前感谢所有帮助!:-)

4

1 回答 1

0

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

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

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

3)见2),服务器上的NLS_LANG大部分时间是无关紧要的。

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

5) 在客户端的 NLS_LANG 和服务器上的 NLS_CHARACTERSET 之间进行比较。后者可以用 来验证SELECT VALUE FROM V$NLS_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET

6)见7,服务器的NLS_CHARACTERSET发送给客户端,反之亦然。

7) 我曾经读到,如果客户端上有相应的转换表可用,则转换是在客户端完成的。如果没有足够的信息可用,则在服务器上完成转换。

于 2012-11-25T17:57:32.190 回答