0

我最近使用 JA16SJIS 字符集创建了一个 Oracle 数据库。

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

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

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

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

4

2 回答 2

1

首先,您应该尝试直接从 SQLDeveloper 数据视图中插入一些文本。无论如何,这应该可以工作,因此您可以使用它来检查您的导入。

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

NSL_LANG=ENGLISH_FRANCE.JA16SJIS

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

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

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

于 2013-08-14T17:07:30.630 回答
0

在这些情况下,我首先要做的是查看数据库中存储了哪些字节值。您可以为此使用转储功能。

select dump(<column>) from <table>

如果你知道你的字符应该有什么字节值,你可以检查你的表中是否有正确的值。

于 2013-08-14T08:33:37.887 回答