PEAK XOOPS - iCalendarの文字化け in englishin japanese

iCalendarの文字化け

  • You cannot open a new topic into this forum
  • Guests cannot post into this forum
Previous post - Next post | Parent - Children.1 | Posted on 2006/6/28 5:41
yashimax  二等兵   Posts: 2
どうもはじめまして

FreeBSD6.0R
apache-2.2.2
php5-5.1.2-1,1
php5-mbstring-5.1.4
php5-mysql-5.1.4
mysql-4.1.20
という環境なのですが、iCalendarのインポート・エクスポートを行うと日本語部分が文字化けを起こします。
mysqlのキャラセットはutf-8を使用しています。

化けている文字のコードを見ているとutf-8の文字列なのにeuc-jpとみなしてutf-8に変換をしているようです。

piCal自身での入出力では文字化けをしないのでどこに原因があるかわかりません。
対処方法をご存知の方はぜひお教えください。
Votes:1 Average:10.00
Previous post - Next post | Parent - Children.1 | Posted on 2006/6/30 5:00
GIJOE  先任軍曹   Posts: 4110
症状だけ見ると、mbstringの内部エンコーディングがEUC-JPのままになっている、なんてのがありがちですが。

ともあれ、このあたりの質問をするなら、mbstringの設定は必須ですよ。

Votes:0 Average:0.00
Previous post - Next post | Parent - Children.1 | Posted on 2006/7/2 5:51
yashimax  二等兵   Posts: 2
返答ありがとうございます。

mbstring.internal_encodingは未設定でしたので変更してみました。
まずDBにあわせてUTF-8に変更したのですが化けるのはかわりませんでした。化け方は変わりましたが。
EUC-JPのままがまずいとのことでしたが、状況を考えると内部コードをEUC-JPだと思っているようなのでEUC-JPにしたところ化けなくなりました。
最終的にこのようなphp.iniになりました。
mbstring.language=Japanese
mbstring.http_output=EUC-JP
mbstring.internal_encoding=EUC-JP
mbstring.encoding_translation=On
以外はデフォルトのままにしてあります。

DBのキャラセットはutf-8なのにページはeuc-jpで化けることなく出力されているので、mbstringの設定に問題があるとは思っておりませんでした。
不思議なのは出力されるhtmlのページは化けずにiCalendarは化けることです。
ページは特に文字コード変換をせずにしていて(xoopsのコア部分まかせ?)、iCalendarは明示的に変換処理を行っているからでしょうか。
マルチバイトは厄介ですね。

# Firefoxだと非ASCIIなダウンロードファイル名は化けるようですね。
# IE6だと化けないようですが。
Votes:1 Average:0.00
Previous post - Next post | Parent - No child | Posted on 2006/7/8 5:53
GIJOE  先任軍曹   Posts: 4110
エンコーディング問題ですが、MySQL4.1以降だと自動でエンコーディング変換を行うので、DBのエンコーディングとPHPの内部エンコーディングはまったく別問題です。
(MySQL側でSET NAMES binaryすれば別ですが)

とにかく、今のXOOPSでトラブりたくなかったら、PHPの内部エンコーディングはEUC-JP(もちろんmbstring.language=Japanese設定も必須)にしておくべきです。そうじゃないと、どこかにひずみがでてくるでしょう。

今回はそれがたまたまpiCalだっただけで、piCalを使っていなかったとしても、どこか他の部分で問題になったことでしょう。設定無しで動いていたのは、むしろ「偶然」です。

Quote:
# Firefoxだと非ASCIIなダウンロードファイル名は化けるようですね。
# IE6だと化けないようですが。
これは判っていて、どうしようか検討中の部分です。(問題先送りとも言う
なにせ圧倒的なシェアを誇るIE6だとShift_JISのファイル名しか受け付けてくれないので仕方がなくそのような仕様にしたのですが、User-Agentを見て、IEでなければUTF-8のファイル名を送る、といった処理分けをする必要があるかもしれません。

Votes:0 Average:0.00

  Advanced search


Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!