Oracle中的NLS_LANG参数

use*_*961 2 sql oracle

我已经使用chracterset POLISH_POLAND.EE8MSWIN1250安装了oracle。我可以从nls_database_parameters中的select *中检查值,它们是NLS_CHARACTERSET = EE8MSWIN1250和NLS_NCHAR_CHARACTERSET = AL16UTF16

对于sqlplus,我将NLS_LANG设置为POLISH_POLAND.EE8PC852。现在,我从sqlplus命令提示符处运行一个sql文件,该文件保存在“无BOM的UTF-8”中,因为它具有波兰语字符并且工作正常。但是,如何检查数据库中的值是否合适?

我已经签入SQL Developer(将NLS_LANG设置为抛光后),但它们看起来不正确。请帮忙。

Cod*_*odo 5

Oracle安装的字符集主要与定义要存储的字符有关。如果您的客户端使用其他编码,Oracle将自动对其进行转换。如果我没记错的话,如果您尝试保存不属于编码的字符,它甚至会警告您。

对于您而言,主要挑战是如何告诉SQLplus文本文件(SQL文件)的编码。由于它是UTF-8,因此需要指定UTF-8值:

set NLS_LANG=.AL32UTF8
Run Code Online (Sandbox Code Playgroud)

要么:

set NLS_LANG=POLISH_POLAND.UTF8
Run Code Online (Sandbox Code Playgroud)

这应该够了吧。

请注意,SQLplus不支持带有BOM的UTF-8。但这目前似乎与您无关。