Oracle sqlplus执行不同编码的文件

use*_*180 4 oracle encoding sqlplus

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

(
   echo @"./myUTF8.sql"
   echo @"./myAnsi.sql"
) | sqlplus uset/pwd@mybd
Run Code Online (Sandbox Code Playgroud)

不幸的是,这些 SQL 脚本是以不同的编码生成的,Ansi、UTF8...

如何告诉 sqlplus 脚本具有指定的编码?

Wer*_*eit 8

您必须使用 command 更改编码chcp,例如chcp 65001对于 UTF-8 或chcp 1252Windows 1252。术语“ANSI”只是许多不同编码的通用名称。请参阅本国家语言支持 (NLS) API 参考中的“ANSI 代码页”列,获取适合您所在区域的代码页。

如果您必须更改 SQL 脚本内的编码,请使用host chcp ...

但是,您还必须NLS_LANG相应地设置环境变量。因此,在更改代码页后,您还必须运行例如SET NLS_LANG=.AL32UTF8或SET NLS_LANG=.WE8MSWIN1252。

请参阅OdbcConnection 返回中文字符为“?” 更多细节。


Fen*_*ang 7

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

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

然后使用sqlplus加载脚本。