在 SQL*Plus 中将字符集设置为 UTF-8

Set charset to UTF-8 in SQL*Plus

我有一个 SQL 脚本,其中包含以下语句:

insert into employee(fname,lname) values('Jörg','Müller');

我的数据库字符集设置为 AL32UTF8,但是当我在 SQL 中执行脚本时,加上德语字母 Ö 和 Ü 没有正确保存。如何将 SQLPlus 的字符集设置为 UTF-8?

是否可以在我的脚本文件中将 SQL*Plus 字符集设置为 UTF-8(sql 脚本文件包含将字符集设置为 UTF-8 的命令)?

我的 运行 时间环境是 Window 但脚本也应该能够 运行 在 unix 上。我的oracle版本是19c.

您通常会使用环境变量 NLS_LANG,例如在 windows 中这样设置它:SET NLS_LANG=AMERICAN_AMERICA.AL32UTF8

SQL*Plus 继承了 cmd window 的字符集。您需要将编码设置为 UTF-8 并告诉它 Oracle。这是通过 NLS_LANG 参数完成的。

试试这个:

chcp 65001
set NLS_LANG=.AL32UTF8
sqlplus ....

当然,这只有在您的 sql-file 也保存为 UTF-8 时才有效。否则你需要从上面调整字符集。