Hatena::ブログ(Diary)

気負わない日記 このページをアンテナに追加 RSSフィード

2007-05-01

[]PHPのiconv関数がすごすぎる件について

UTF-8のデータを携帯サイトで表示しなければならなくなり試行錯誤の記録。

ご存知だと思うのですが携帯のサイトで利用できる文字コードはShift-JISになります。

そのようなわけでUTF-8SJISへの変換が必要になるのですが、UTF-8で表示できてSJISで表示できない文字があります。

たとえばフランス語などで使われているアクセント記号があります。

以下のようなeやaの上に何かがついている文字です。

théâtre

これを上手に変換するにはどうしたらよいか?

変換テーブルを作成して置換する。

下記のような関数を作成して置換する方法もありますが、もっとスマートな方法はないのかな?

function ascii_replace($message) {

$from = array("É","À","È","Ù","Â","Ê","Î","Ô","Û","Ë","Ï","Ü","Ç","Œ",

"à","è","ù","â","ê","î","ô","û","ë","ï","ü","ç","œ");

$to = array("E","A","E","U","A","E","I","O","U","E","I","U","C","OE",

"a","e","u","a","a","i","o","u","e","i","u","c","oe");

return str_replace($from, $to, $message);

}

登録フォームで情報を登録、メール配信するシステムをPHPで作っているのですが、フランス語などのアクセント記号付文字を登録すると文字化けしてしまいます。出来れば登録.. - 人力検索はてな
iconv関数を利用する

PHPマニュアルを眺めていたらiconv関数と言うものがありました。

これが以下のようなすばらしい動作をしてくれます。

文字列 //TRANSLIT を out_charset に追加すると、翻字機能が有効になります。これは、指定された文字集合で 表せない文字を、見た目の似ている別の文字に置き換える機能です。 文字列 //IGNORE を追加すると、指定された文字集合で 表せない文字は黙って切り捨てられます。 それ以外の場合は、str の中に変換できない文字が 出現した時点で変換が打ち切られます

PHP: iconv - Manual

iconv関数を使用することにしました。

PHPインストール時に--with-iconvを忘れずに

iconv関数がすごいといえる理由

iconvがすごいといえるのは蠅筬´△里茲Δ機種依存文字も(株)(1)(2)のように変換してくれるところです。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/obys/20070501/1178030835