php で文字コード変換をする場合は
mb_convert_encoding("ほげほげ", "SJIS", "UTF-8")
といった感じで変えられますが
mb_convert_encoding("郄橋", "SJIS", "UTF-8")
とやると文字化けします。

つまり、Shift-JISの拡張文字をUTF-8 (から|へ) 変換しようとすると化けるらしい。

拡張文字の代表としては「磲」とかも。
あとは「?????」のローマ数字の類もそう。

解決としては
mb_convert_encoding("郄橋", "SJIS-win", "UTF-8")
これだけ?
って感じですが、これで問題なく変換できます。


これだけでなぜ通るのか、ちょっと調べたけれどよくわかりませんでした。
詳しい方いたら教えてください...

参考
PHPでのハシゴ高とかタチ崎の扱い



【2007/06/18追記】
mb_convert_encodingの書き方が間違っていました。
恥ずかしい...

【2007/09/17追記】
なぜ "SJIS-win"で文字化けが解消されるのかと言えば、拡張文字の持ち方の違いによるものでした。
以下の記事を読んでいただくと、参考になるかと思います。
PHP+PostgreSQLでEUC-JP出力は非常識!? 〜windowsでIBM拡張文字が文字化け : 地方で活動するweb制作者の日々を綴るblog

にほんブログ村 IT技術ブログ プログラム・プログラマへ