首页 文章

从Linux服务器的sqlplus插入时,Windows-1252(80-9F)控制字符作为inserted插入到oracle db中

提问于
浏览
0

当我从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 回答

  • 0

    您的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代码:

    NLS_LANG=American_America.UTF8
    NLS_LANG=AMERICAN_AMERICA.AL32UTF8
    

    Oracle Database Client Globalization Support总是使用 AMERICAN_AMERICA.AL32UTF8 .

相关问题