我知道oracle数据库有两个字符集:
NLS_NCHAR_CHARACTERSET
和NLS_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
答案 0 :(得分:1)
如果所有其他方法都失败了,您可以在获取之前插入和解码之前http://php.net/manual/en/function.base64-encode.php字符串。最糟糕的情况。
答案 1 :(得分:0)
感谢所有帮助。 毕竟我无法解决此问题而无需重新创建数据库并重置字符集... 我学到的一件事是,在创建oracle数据库时必须注意初始设置......