我有一个通过sqlplus执行SQL脚本的批处理文件:
( echo @"./myUTF8.sql" echo @"./myAnsi.sql" ) | sqlplus uset/pwd@mybd
不幸的是,这些SQL脚本是以不同的编码生成的,Ansi,UTF8,...如何告诉sqlplus脚本是指定的编码?
tjjdgumg1#
我有一个在UTF8中创建的SQL脚本,在Linux中使用sqlplus运行它,然后打开sqlplus
export NLS_LANG=.AL32UTF8
然后使用sqlplus加载脚本。
oogrdqng2#
您必须使用命令chcp,e更改编码。例如,chcp 65001用于UTF-8或chcp 1252用于Windows 1252。术语“ANSI”只是许多不同编码的通用名称。请参阅此National Language Support (NLS) API Reference中的“ANSI代码页”列,以获取适合您的语言环境的代码页。如果必须更改SQL脚本中的编码,请使用host chcp ...但是,您还必须相应地设置NLS_LANG环境变量。因此,在更改代码页后,还必须运行例如SET NLS_LANG=.AL32UTF8或SET NLS_LANG=.WE8MSWIN1252。请参阅OdbcConnection返回的中文字符为“?“了解更多详情。
chcp
chcp 65001
chcp 1252
host chcp ...
NLS_LANG
SET NLS_LANG=.AL32UTF8
SET NLS_LANG=.WE8MSWIN1252
gpfsuwkq3#
sqlplus 19.x / windows 10 /命令提示符在sql脚本本身中设置“hostchcp 65001”没有帮助,在“set_sqlplus_params”中也没有帮助。sql”在要执行的sql脚本之前调用。唯一的帮助是将其设置为shell本身的环境变量:
set SET NLS_LANG=.AL32UTF8
然后调用sqlplus执行UTF-8格式的脚本。
3条答案
按热度按时间tjjdgumg1#
我有一个在UTF8中创建的SQL脚本,在Linux中使用sqlplus运行它,然后打开sqlplus
然后使用sqlplus加载脚本。
oogrdqng2#
您必须使用命令
chcp
,e更改编码。例如,chcp 65001
用于UTF-8或chcp 1252
用于Windows 1252。术语“ANSI”只是许多不同编码的通用名称。请参阅此National Language Support (NLS) API Reference中的“ANSI代码页”列,以获取适合您的语言环境的代码页。如果必须更改SQL脚本中的编码,请使用
host chcp ...
但是,您还必须相应地设置
NLS_LANG
环境变量。因此,在更改代码页后,还必须运行例如SET NLS_LANG=.AL32UTF8
或SET NLS_LANG=.WE8MSWIN1252
。请参阅OdbcConnection返回的中文字符为“?“了解更多详情。
gpfsuwkq3#
sqlplus 19.x / windows 10 /命令提示符
在sql脚本本身中设置“hostchcp 65001”没有帮助,在“set_sqlplus_params”中也没有帮助。sql”在要执行的sql脚本之前调用。
唯一的帮助是将其设置为shell本身的环境变量:
然后调用sqlplus执行UTF-8格式的脚本。