当我从Windows中的sql developer插入Windows-1252(80-9F)控制字符时,它们被正确插入到oracle db中 .
但是当我在linux服务器中使用 sqlplus
时,控制字符在同一个数据库中插入为 . .
例如,当我在linux服务器sqlplus中执行以下语句时,
insert into demo values ('“a”');
我在db中插入以下输出:
一
对于像 Œ, Ž, Š, ‹
等其他控制字符也会发生同样的事情 .
我的区域设置:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
有人能帮我吗?
1 回答
您的Linux机箱使用的是UTF-8(
LANG=en_US.UTF-8
),因此您需要告诉SQL * Plus您键入的所有内容都使用该编码 . 这样做的方法(the only way to do so,据我所知)是创建NLS_LANG
env变量并将其代码为UTF-8-I 've found two different values in the docs I' ve的Oracle代码:Oracle Database Client Globalization Support总是使用
AMERICAN_AMERICA.AL32UTF8
.