我最近创建了一个带有JA16SJIS字符集的Oracle DB。
然后我尝试使用运行外部SQL文件的SQL * Plus插入一些包含日文字符的数据。该文件以Shift-JIS编码(我可以使用notepad ++在文件中正确查看日文字符)。
插入成功但是当我选择数据时(使用SQL * Plus),日语字符显示不正确(就像一些带有问号的字母字符)。
即使我使用SQL Developer查看数据,日语字符仍然不可读。
我正在使用Window 7 Professional SP1,Oracle Database 11g R2,系统区域设置也设置为日本。
答案 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>
如果您知道字符应具有的字节值,则可以检查表中是否包含正确的值。