为Oracle选择NLS_LANG

时间:2011-12-28 13:23:32

标签: oracle encoding utf-8 internationalization globalization

根据网站, http://www.dba-oracle.com/t_nls_lang.htm

即使数据库和客户端都使用相同的字符集(AL32UTF8),也可能会出现问题。我无法理解这是如何可能的。 引自网站:

  

例如,假设数据库字符集是AL32UTF8,即   客户端是英文Windows操作系统,NLS_LANG   客户端上的设置是AL32UTF8。 进入数据库的数据是   在WE8MSWIN1252中编码,不会转换为AL32UTF8数据   因为客户端上的NLS_LANG设置与数据库匹配   字符集。因此Oracle假定不需要转换,   并将无效数据输入数据库。

当客户端中的编码是AL32UTF8时,数据如何作为WE8MSIN1252进入数据库?

1 个答案:

答案 0 :(得分:6)

因为OS本身使用其他字符集(在本例中为WE8MSIN1252)。但由于NLS_LANG(在客户端上)设置为AL32UTF8,因此Oracle不知道这一点。 Oracle始终在NLS_LANG中使用值并忽略系统设置,而(几乎)所有其他软件都使用操作系统设置。

因此,要解决此问题,本地(客户端)NLS_LANG必须与OS字符集相同。或者(其他选项)在客户端上运行的软件必须自行重新编码字符。