如何在oracle数据库中正确显示日文字符

时间:2013-08-28 01:22:38

标签: php oracle character-encoding

我知道oracle数据库有两个字符集: NLS_NCHAR_CHARACTERSETNLS_CHARACTERSET

我将它们设置为:

NLS_CHARACTERSET           WE8MSWIN1252
NLS_NCHAR_CHARACTERSET     UTF8

我创建数据库时。

另外,我创建的表格使用NVARCHAR而不是VARCHAR,因此应该保存使用UTF8

ID          NUMBER      
EMAIL       NVARCHAR2(255)  
USER_NAME   NVARCHAR2(255)      
POST_AT     DATE
CONTENTS    NVARCHAR2(255)  

然而,我无法获得正确的输出。当我插入包含日文字符的行时,它只是给出“???”当我在终端检查时。

我不知道为什么它不起作用。有没有人知道解决这个问题的方法?

另外,如果我不在乎它是如何在数据库中保存的,只是想从数据库中取出后得到正确的输出,有没有正确的解码方法? (我已经尝试了几种转换编码但不起作用的方法)

我使用PHP的OCI8来访问数据库。 oracle数据库的版本是oracle 11gR2 for linux.x64

2 个答案:

答案 0 :(得分:1)

如果所有其他方法都失败了,您可以在获取之前插入和解码之前http://php.net/manual/en/function.base64-encode.php字符串。最糟糕的情况。

答案 1 :(得分:0)

感谢所有帮助。 毕竟我无法解决此问题而无需重新创建数据库并重置字符集... 我学到的一件事是,在创建oracle数据库时必须注意初始设置......