プロジェクト

全般

プロフィール

Backport(バックポート) #3179

4バイト文字を含んだ文字列を投稿すると、4バイト文字以降のデータが切れた状態で保存されてしまう

Yuma Sakata11年以上前に追加. 11年以上前に更新.

ステータス:
Fixed(完了)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2012-07-26
期日:
進捗率:

100%


説明

現象

MySQL の utf8 では4バイトの文字を扱うことができず、4バイト文字を含む文字列を保存する際に4バイト文字以降が切れてしまった不完全な状態で保存されてしまいます。

この影響で、以下の様な問題が発生します。

  • 必須項目が空の投稿がおこなえる
  • トピック・日記のタイトルに4バイト文字が含まれていると、通知のアクティビティデータが破損し、そのアクティビティを表示する箇所(マイホーム、アクティビティリストなど)が500エラーになる
    500 | Internal Server Error | Doctrine_Table_Exception
    Unserialization of template_param failed.

UTF-8 の4バイト文字は、JIS X 0213 第3・第4水準漢字の一部や、Unicode 6.0 の携帯電話の絵文字の一部が該当します。
Unicode 6.0 で定義された携帯電話の絵文字は iOS 5 の絵文字としても既に使われていますが、このうち U+10000 以降のものは UTF-8 では4バイト文字となります。

参考

UTF-8で4バイトになる文字
http://www.softel.co.jp/blogs/tech/archives/596

Unicode6.0の携帯電話の絵文字の一覧 - Wikipedia
http://ja.wikipedia.org/wiki/Unicode6.0%E3%81%AE%E6%90%BA%E5%B8%AF%E9%9B%BB%E8%A9%B1%E3%81%AE%E7%B5%B5%E6%96%87%E5%AD%97%E3%81%AE%E4%B8%80%E8%A6%A7

iOS Emoji
http://punchdrunker.github.com/iOSEmoji/table_html/

現象確認バージョン

OpenPNE-3.6.4
h3. 原因

修正内容


関連するチケット

関連している OpenPNE 3 - Bug(バグ) #3134: 4バイト文字を含んだ文字列を投稿すると、4バイト文字以降のデータが切れた状態で保存されてしまう Won't fix(対応せず) 2012-07-26

関係しているリビジョン

リビジョン 55571d65 (差分)
Kousuke Ebihara11年以上前に追加

changed opDoctrineRecord::_set() to replace 4 bytes UTF-8 characters to U+FFFD in MySQL non binary string column (refs #3179, BP from #3134) (cherry picked from commit 61b427a88dcbc3070b5e9c52c998b9e745f2d5d2)

履歴

#1 Yuya Watanabe11年以上前に更新

  • 担当者Yuya Watanabe にセット

#2 Yuma Sakata11年以上前に更新

  • 対象バージョンOpenPNE 3.8.2 から OpenPNE 3.8.x に変更

3.8.3 以降で対応します。

#3 Yuma Sakata11年以上前に更新

  • 対象バージョンOpenPNE 3.8.x から OpenPNE 3.8.3 に変更

#4 開 石切山11年以上前に更新

  • 対象バージョンOpenPNE 3.8.3 から OpenPNE 3.9.0-old に変更

#5 Kousuke Ebihara11年以上前に更新

  • 対象バージョンOpenPNE 3.9.0-old から OpenPNE 3.8.4 に変更

#6 Kousuke Ebihara11年以上前に更新

  • ステータスNew(新規) から Accepted(着手) に変更
  • 担当者Yuya Watanabe から Kousuke Ebihara に変更

#7 Kousuke Ebihara11年以上前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

#8 Rimpei Ogawa11年以上前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

#9 開 石切山11年以上前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

他の形式にエクスポート: Atom PDF