4

NLS_NCHAR_CHARACTERSETOracle データベースには、との 2 つの文字セットがあることを知っています 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 データベースのバージョンは、linux.x64 用の oracle 11gR2 です。

4

2 に答える 2

1

他のすべてが失敗した場合は、http://php.net/manual/en/function.base64-encode.php挿入する前に文字列を取得し、取得後にデコードできます。最悪の場合。

于 2013-08-28T21:34:45.643 に答える
0

Thanks for all helps. I cannot resolve this problem after all without recreate the database and reset the character set... one thing I learned is that one MUST pay attention to the initial setting when creating a oracle database...

于 2013-09-02T02:25:31.057 に答える