2011年5月4日水曜日

UTF8を扱いたかった。

日本語がうまく扱えないので調べてみた。
ことの発端はローカルで開発しているときには問題がでなかった文字コード問題がサーバー側で起動したらぽろぽろ問題が発生したことにある。
byteコードに直したデータを再変換かけてやってもなぜか??????等こわれた文字列になって動作できなかったです。

システムエンコードとデフォルトエンコードをしらべてみると
   System.out.println(new InputStreamReader(System.in).getEncoding());
   System.out.println(System.getProperty("file.encoding"));

   ASCII
   ANSI_X3.4-1968
という文字コードになっている模様。
System.setProperty("file.encoding", "UTF8");等やってみたものの効果なし。

仕方ないのでRed5の起動オプションに
-Dfile.encoding=UTF8
を追加しました。これがないとQuercus上でUTF8の文字列のJava PHP間での共有ができないっぽいです。
この状態でエンコードを調べると
   UTF8
   UTF8
となりました。

なお、先に問題になっていた、Quercus上での2重エンコードしてしまってUTF8が化ける問題はこの件とは別ものです。やはりbin2hexで16進数文字列に変更してやってから変換かけないとだめっぽいです。

0 件のコメント:

コメントを投稿