Oracle sqlplus执行不同编码的文件

dwbf0jvd  于 2023-04-29  发布在  Oracle
关注(0)|答案(3)|浏览(148)

我有一个通过sqlplus执行SQL脚本的批处理文件:

(
   echo @"./myUTF8.sql"
   echo @"./myAnsi.sql"
) | sqlplus uset/pwd@mybd

不幸的是,这些SQL脚本是以不同的编码生成的,Ansi,UTF8,...
如何告诉sqlplus脚本是指定的编码?

tjjdgumg

tjjdgumg1#

我有一个在UTF8中创建的SQL脚本,在Linux中使用sqlplus运行它,然后打开sqlplus

export NLS_LANG=.AL32UTF8

然后使用sqlplus加载脚本。

oogrdqng

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=.AL32UTF8SET NLS_LANG=.WE8MSWIN1252
请参阅OdbcConnection返回的中文字符为“?“了解更多详情。

gpfsuwkq

gpfsuwkq3#

sqlplus 19.x / windows 10 /命令提示符
在sql脚本本身中设置“hostchcp 65001”没有帮助,在“set_sqlplus_params”中也没有帮助。sql”在要执行的sql脚本之前调用。
唯一的帮助是将其设置为shell本身的环境变量:

set SET NLS_LANG=.AL32UTF8

然后调用sqlplus执行UTF-8格式的脚本。

相关问题