2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 09 | 11 |
2010 | 01 |
2011 | 01 | 06 |
2008-06-19
PHPで名前を扱う場合、文字コード指定に注意が必要
CakePHP のおいしい食べ方: EUC-JPではなく、EUCJP-win!!!
お客さんがWindowsを使うと分かっていて、日本語の名前に関するデータ処理をするようなプログラムを書く場合、
$str = mb_convert_encoding($str, "EUC-JP", "UTF-8");
なんてやっちゃだめです。
$str = mb_convert_encoding($str, "EUCJP-win", "UTF-8");
としないと、あとできっと、顧客からクレームが来ます。
知らずに中で使っていて、まさにご指摘いただきました。
具体的にどういうことが起きるかというと。
とか
のような文字の文字コードを変換する場合
"-win"って指定してないとその文字が消えるんです。
これ、実はメールの本文の文字コード(ISO-2022-JP)でも同様のことが起きます。
Old Nabble - Php Japan - PHP-dev - [PHP-dev 1345] PHP への CP932 系エンコーディングの追加パッチ
このパッチを適用する事により、次の事が実現されます。
1) Windows の機種依存文字をシフトJIS (SJIS-win)、日本語EUC (CP51932、
eucJP-win)、7ビットJIS (ISO-2022-JP-MS) で扱えるようになります。
2) Windows 上で作成された Unicode とシフトJIS (SJIS-win)、日本語EUC
(CP51932、eucJP-win)、7ビットJIS (ISO-2022-JP-MS) との間で変換可能
になります。
PHP5.2.1以降ならば、すでにパッチが当たってるので、以下のような書き方でOKです。
<?php // mbstring.internal_encoding euc-JP-win // これだと文字が消えます $result = mb_convert_encoding( $str, "ISO-2022-JP", "euc-JP-win"); // これだとちゃんと表示されます。 $result = mb_convert_encoding( $str, "ISO-2022-JP-MS", "euc-JP-win");
いやーびっくりした。
クリック: 49回
購入: 5人 クリック: 7回
- 35 http://okyuu.com/ja/tips/1498
- 19 http://b.hatena.ne.jp/entrylist?sort=hot
- 18 http://reader.livedoor.com/reader/
- 6 http://b.hatena.ne.jp/add?mode=confirm&title=PHP%u3067%u540D%u524D%u3092%u6271%u3046%u5834%u5408%u3001%u6587%u5B57%u30B3%u30FC%u30C9%u6307%u5B9A%u306B%u6CE8%u610F%u304C%u5FC5%u8981 - Affirmative Way&url=http://d.hatena.ne.jp/cos31/20080619/php_enc
- 6 http://b.hatena.ne.jp/entrylist?sort=hot&of=50&threshold=3
- 5 http://b.hatena.ne.jp/yuhei_kagaya/
- 5 http://okyuu.com/en/tips/1498
- 4 http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/cos31/20080619/php_encoding
- 4 http://b.hatena.ne.jp/entrylist?sort=hot&of=100&threshold=5
- 4 http://b.hatena.ne.jp/entrylist?sort=hot&url=http://d.hatena.ne.jp/


