Oracle sqlplus执行不同编码的文件

Oracle sqlplus execute files of different encoding

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

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

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

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

您必须使用命令 chcp 更改编码,例如chcp 65001 表示 UTF-8 或 chcp 1252 表示 Windows 1252。术语 "ANSI" 只是许多不同编码的通用名称。请参阅此 National Language Support (NLS) API Reference 处的 "ANSI codepage" 列以获取您的语言环境的代码页。

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

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

有关详细信息,请参阅

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

export NLS_LANG=.AL32UTF8

然后使用sqlplus加载脚本。