SimpleXMLに渡す前にマルチバイト関数で変換

實松アウトプット: 自分で作ったAPIを自分で使うのに苦戦中
http://sane.justblog.jp/blog/2007/06/api_3a46.html

$xml = @simplexml_load_file($url);

で変換出来たり出来なかったりする問題は

$xmlstr = file_get_contents($url);
mb_convert_variables('UTF-8','SJIS-win',&$xmlstr);
$xmlstr = str_replace('encoding="Shift_JIS"', 'encoding="UTF-8"', $xmlstr);
$xml = new SimpleXMLElement($xmlstr);

に変える事で解決。文字コード弄るの怖くて出来るだけ素通しするようにしてきたのですが、機種依存文字まで含めてちゃんと変換できていました。ちゃんと変換できるのならば、データベースからiwnid,nonyuから全部含めてUTF-8にしたかったなあ。Shift_JISをpreg_matchするのはしんどい…。後の祭り。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中