タグ

文字コードに関するnoopableのブックマーク (3)

  • fgetcsv関数を文字化け対応 setlocaleの文字コード指定 - [PHP + PHP] ぺんたん info

    PHP5でCSVファイルに日語などマルチバイト文字が含まれるものをfgetcsv()関数で配列に入れるとき、日語文字が消えるまたは一部消えることがあります。 PHP5になってから発生する事象ですが、これはPHP5のバグではありません。設定場所が変わっただけです。 たとえばCSVで次のようなデータがあったとします。 ID,名前,都道府県ID,電話番号or携帯番号 これをfgetcsv()関数で読み込むと Array( [0] => ID, [1] => , [2] => ID, [3] => or携帯番号, ) となります。 全て日語文字の場合は消えて、一部日語文字の場合は先頭の日語文字が消えます。 この現象はPHP4ではおこらず、PHP5で発生します。またwindowsサーバではPHP5でも発生しないことがあります。 fgetcsv()関数の文字コードの指定は、mb_langua

  • PHP でシリアライズしたデータが壊れてしまう場合は base64_encode をする

    PHP で配列にデータを格納し serialize してデータの受け渡しをしていたら IE8 で unserialize してデータを復元することができないバグに遭遇しました。具体的には以下のようなエラーが発生。 Notice: unserialize() [function.unserialize]: Error at offset 0 of 2 bytes in /var/usr/to/path うまく値の受渡しができていないのか、途中でデータが書き換わってしまったのか、様々な問題を調査しましたがどれも該当せず3時間。Web 上で情報を集めるもそれらしい問題に遭遇してる人がおらず解決できず。 どうしようもなくなったので、30個くらいある配列すべてをひとつずつ調べてチェックしていくと、どうやら30個の中の3配列が原因だということが判明しました。日語の文字コードがおかしいのかと思っ

  • UTF-8→SJIS/EUC-JPの重複文字をまとめてみた - hnwの日記

    文字エンコーディングの変換を行うと、異なる2文字が同じ文字に変換されることがあります。このような文字を重複文字と呼ぶことにします。UTF-8→Shift_JISおよびUTF-8→EUC-JPについて、重複文字を自分用の資料としてまとめてみました。 MacOSX上のPHP5.2.9での実験結果ですが、プログラミング言語や環境によらず気をつけるべき文字一覧ということになると思います。 色のついている部分が重複している部分です。「-」となっているのは変換できなかった文字です。また、ヘッダのカッコ数字ごとに文字エンコーディング変換に利用した関数が異なります。詳細は下記の通りです。 (1) mb_convert_encoding($char, "Shift_JIS", "UTF-8") (2) mb_convert_encoding($char, "SJIS-win", "UTF-8") (3) i

    UTF-8→SJIS/EUC-JPの重複文字をまとめてみた - hnwの日記
  • 1