4

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

我将它们设置为:

NLS_CHARACTERSET           WE8MSWIN1252
NLS_NCHAR_CHARACTERSET     UTF8

当我创建数据库时。

我也创建了我的表使用NVARCHARVARCHAR所以它应该被保存使用UTF8

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

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

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

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

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

4

2 回答 2

1

如果一切都失败了,您可以http://php.net/manual/en/function.base64-encode.php插入之前的字符串并在获取之后解码。最坏的情况下。

于 2013-08-28T21:34:45.643 回答
0

感谢所有帮助。如果不重新创建数据库并重置字符集,我根本无法解决这个问题……我学到的一件事是,在创建 oracle 数据库时必须注意初始设置……

于 2013-09-02T02:25:31.057 回答