Oracle数据库中的日语字符未正确显示

时间:2013-08-14 04:34:06

标签: database oracle character-encoding sqlplus

我最近创建了一个带有JA16SJIS字符集的Oracle DB。

然后我尝试使用运行外部SQL文件的SQL * Plus插入一些包含日文字符的数据。该文件以Shift-JIS编码(我可以使用notepad ++在文件中正确查看日文字符)。

插入成功但是当我选择数据时(使用SQL * Plus),日语字符显示不正确(就像一些带有问号的字母字符)。

即使我使用SQL Developer查看数据,日语字符仍然不可读。

我正在使用Window 7 Professional SP1,Oracle Database 11g R2,系统区域设置也设置为日本。

2 个答案:

答案 0 :(得分:1)

首先,您应该尝试直接从SQLDeveloper数据视图中插入一些文本。无论如何都应该有效,所以你可以用它来检查你的进口。

然后在连接SQL * Plus之前,您必须通过设置或更改环境变量NLS_LANG的值来指定要发送的内容。

NSL_LANG=ENGLISH_FRANCE.JA16SJIS

语法取决于您的操作系统。唯一重要的部分是最后一个JA16SJIS,这意味着你已经知道的Shift-Jis。

然后,您可以使用SQL * Plus连接并导入文件。

请注意,您指定的编码必须与文件的编码匹配,但不一定是基本编码,因为Oracle会在必要时进行转换。所以你可以把你的基础用在UTF8中它仍然可以工作(因为UTF8可以容纳日文字符)。

答案 1 :(得分:0)

在这些情况下,我要做的第一件事就是查看数据库中存储的字节值。您可以使用转储功能。

select dump(<column>) from <table>

如果您知道字符应具有的字节值,则可以检查表中是否包含正确的值。