[PHP-users 35723] Re: DOMDocument

Yoshi Saito yk_mailing @ excite.co.jp
2012年 6月 4日 (月) 00:41:42 JST


鈴木さま、ご返答ありがとうございます。
文字コードは今まで何度もはまっております。
難しいです。


> 1. mb_detect_encoding を使って取得している文字列がどのコードであるとPHPが認識しているかを確認する。

自分のコード中で
foreach ($extracts as $value)
{
  $result = trim($value->nodeValue);
  var_dump(mb_detect_encoding($result));
}
を行ってみました。

結果はforeach()で沢山出力されますが、殆どが
string 'UTF-8' (length=5)
なのですが、中に何故か
string 'eucJP-win' 
が含まれてもいました。



> 2. mb_internal_encoding 
> を使って現在PHPに設定されているコードを確認する。ついでにスクリプトが書かれているテキストファイルの文字コードをもう一度確認してみる。

やはりUTF-8でした。
ファイルはデフォルトでUTF-8にしているのと、ファイルだけでなく、ブラウザ上でも文字化けしています。



> 3. php.iniのdefault_charsetをみてみる。

default_charset	UTF-8	UTF-8
となっておりました。



> あとこのスクリプトはウェブサーバーで動かしているのでしょうか。その場合ブラウザーが認識しているコード、apacheが送り出しているといっているコード(AddDefaultCharset)とかも確認されてはどうでしょうか。

Apacheのlocalhostで動かしております。
LinuxではAddDefaultCharset設定していたと思いますが、Windowsではほぼデフォルトのまま使っていましたので追記しましたがやはりダメでした。


やっぱ難しいです。







"?贋?&#65533;?緇?_(Suzuki_Takamasa)"<takamasa @ thaliana.myhome.cx> wrote:
> yk_mailing @ excite.co.jp> 
> 文字コード悩ましいですよね。私もよくはまります。特にメール送信関連で。
> 
> 送っていただいたスクリプトをよく読んでおりませんし検証もしていませんが以下を確認されてはどうでしょうか。
> 1. mb_detect_encoding を使って取得している文字列がどのコードであるとPHPが認識しているかを確認する。
> 2. mb_internal_encoding 
> を使って現在PHPに設定されているコードを確認する。ついでにスクリプトが書かれているテキストファイルの文字コードをもう一度確認してみる。
> 3. php.iniのdefault_charsetをみてみる。
> 
> あとこのスクリプトはウェブサーバーで動かしているのでしょうか。その場合ブラウザーが認識しているコード、apacheが送り出しているといっているコード(AddDefaultCharset)とかも確認されてはどうでしょうか。
> 
> Windowsで書いた昔のスクリプトを何気にコピーしてlinuxのviでUTFのつもりで編集していると実はSJISだったりして、ディレクトリまるごとnkf 
> -Lu -wしたりなんてことになった記憶が。
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
> 
Yoshi Saito


PHP-users メーリングリストの案内