†XMLと言えばUnicode(UTF-8)な訳だが、データによってはそうでないものも良くある。日本語ってやつは面倒くさいことが多い。simple_xml関数を使用すると、UTF-8以外の文字コードを使用した場合、パーサエラーが出ることがある。環境によって出たりでなかったりしているような印象だ。†マルチバイトと言えばマルチバイト関数mb_convert_encodingが思いつくが、メインでは使用しない。PHP?http://www.doyouphp.jp/php5/php5_simplexml.shtmlでは、マルチバイト文字を扱う場合、internal_encodingに変換して出力すると書いてあるが、これは正しくないと思われる。実際はSimpleXML、もっと言うならLibxml2とmb_convert_encodingは、なんの横つながりもない。XMLパーサ関数で日本語を扱うhttp://www.hawk.34sp.com/stdpls/php/xml_parse.htmlでの記述。iconvがサポートしているエンコーディングが全て使えるつまり、iconvが影響しているのだ。文字コードの変換をする関数。iconvはlibiconvを使用した関数。マルチバイト関数はPHP独自実装。3.0.x国際化対応版、PHP4.2.2国際化版をPHPに取り込んだもの。文字コードの変換を行っている。?>と記述してあるわけだが、このencode属性を読みとって、SimpleXMLは変換を行っている。US-ASCIIの3つにしか対応していないので、どんなに頑張っても文字化けする。そこで、iconvライブラリを使用すると、ほぼすべての言語に対応できるというわけ。特別ソースコードを変更することはない。phpinfoにiconvがあればよい。無い場合はのconfigureオプションに--with-iconvを追加しておく。blogrssに非UTF8の不正な文字列がある場合の対処法http://fladdict.net/blog/2006/06/rssutf8.htmlで、PHP5のSimpleXMLが、rss内に不正な文字列があるとパースエラーを起こしてしまうのだけど、ついに対処法を編み出した。"SJIS");//またutf8に戻すmb_convert_encodingスゴス。あるが、これはもう一つ進んだ話。SJISなど)が入っていると言った具合。一度すべての文字コードを統一してから、SimpleXMLにパースさせると安全に文字変換が行える。†UTF-8,EUC-JP,SJISのXMLファイルを読み込むことを想定して、ソースはこんな感じだろうか。);1行目を読みとって、encodingを取得する方がより安全かもしれない。(金)HTTPのヘッダーはあまり参考にならないので、解析する形の方が良いと思います。・・・それにしても、自分で書いた文章ながら支離滅裂な内容に唖然としてしまった。Project証券会社ランキング。