我有一个SQL脚本,包含以下语句:
insert into employee(fname,lname) values('Jörg','Müller');
我的数据库字符集列表设置为AL32UTF8,但当我在SQL中执行脚本时,加上德语字母Ö和Ü没有正确保存。如何将SQLPlus的字符集设置为UTF-8?
是否可以在我的脚本文件中设置SQL*Plus字符集为UTF-8 (SQL脚本文件包含将字符集设置为UTF-8的命令)?
我的运行环境是windows,但脚本也应该能够在unix上运行。我的oracle版本是19c。
SQL*Plus从cmd
窗口继承字符集。您需要将编码设置为UTF-8,并告诉它Oracle。这是通过NLS_LANG
参数完成的。
试试这个:
chcp 65001
set NLS_LANG=.AL32UTF8
sqlplus ....
当然,这只在sql文件也保存为UTF-8时才有效。否则,您需要从上面调整字符集。
参见OdbcConnection返回中文字符为"?">
您通常会使用环境变量NLS_LANG,例如在windows中这样设置:set NLS_LANG=AMERICAN_AMERICA。AL32UTF8