スポンサーサイト

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録
    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

    PHP-UTF-8でunserializeするとき。。。

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録
    久々です。
    ここ2、3週間解決しなかった問題が解決したので備忘録。

    とあるソフトの日本語化で問題が発生。
    どこで問題が出ているかわからなかった(問題になりそうなところは手を打った)
    という状況でうだうだやっていましたが、ソースを丁寧に追っていくと、
    どうやらserializeした変数をUTF-8(日本語)にするとロストして
    しまうようだ。

    試しに簡素化した似せたソースを作ってみたら、
    UTF-8のunserializeがうまくいかないことが判明。

    php.netにもコメントがあった。

    なるほど。実はよくわかっていないが、UTF-8だとアスキーとのからみで問題が
    あるみたい。
    下記の様にしてみたら、無事開通。久々に満足感。
    ※$row["test"]がserializeされた文字。

    $unserial_utf8_out = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $row["test"] );
    return unserialize($unserial_utf8_out);
    スポンサーサイト

    theme : Linux
    genre : コンピュータ

    comment

    Secret

    ご案内
    google検索
    カスタム検索
    カテゴリ
    最新記事
    Amazon
    カテゴリー&RSS
    RSS新着情報

    plugin by F.B

    検索フォーム
    最近のコメント(コンパクト)
    データ取得中...
    リンク
    フリーエリア
    RSSリンクの表示
    カレンダー
    09 | 2017/10 | 11
    1 2 3 4 5 6 7
    8 9 10 11 12 13 14
    15 16 17 18 19 20 21
    22 23 24 25 26 27 28
    29 30 31 - - - -
    ブックマーク
    Yahoo!ブックマークに登録
  • | このエントリーを含むはてなブックマーク
  • 月別アーカイブ
    最新トラックバック
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。