-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
mysqlが絵文字に対応していない #77
Comments
あまり詳しくないので教えて下さい。 utf8_unicode_ci なサイトでスマホから d3forum に絵文字を投稿してみたところ、絵文字だけがカットされた状態でした。 |
利用可能であれば utf8mb4 にしておけば下位互換性を保ちつつ、4バイト文字も扱えるという認識でよろしいでしょうか? |
utf8からutf8mb4にすると微妙に互換性がないので、100%問題がないかって言われるとあれな気がします。 MySQL :: MySQL 5.6 リファレンスマニュアル :: 10.1.11 以前の Unicode サポートから現在の Unicode サポートへのアップグレード
ぶっちゃけどうでもよいけど、これって絵文字だけじゃなくて、絵文字以降全部カットされたような記憶が。 |
@hamaco ありがとうございます。なんかややこしそうですね。モジュールによってどのようなテーブル定義・構造にしているか分からないので、insert 時にカラム定義を見て4バイトに対応していない場合は、4バイト文字のみ除去するのがいいように思います。 メモ $textwithout4byte = preg_replace('/[\xF0-\xF7][\x80-\xBF][\x80-\xBF][\x80-\xBF]/', '', $textwith4byte); ref. http://m.designbits.jp/12072410/ 追記 追記その2 |
大変遅くなり申し訳ございません。記憶がおぼろげなんですが、何かのモジュールで投稿後真っ白になった気がします。いずれにしてもスマホファーストの時代ですので絵文字が出せないのはなんとかしたいですね。(将来的に若い開発者が入ってこなくなってしまいます) 4バイト文字のみ除去はいい方法だと思います。 できれば userテーブル のような問題もありますし、mysql側の更新については一気に移行させてしまうフローをこれを機に作って、以降の面倒を見なくてもいいようにできたらいいかもしれないですね。(最近のサービスはリリースと一緒に移行ツール自動発火が多いですし)
|
こちらで対応していただいたコードを見て気付いたのですが、mysqlの文字コードが
utf8_general_ci
のようです。これはスマホから絵文字を投稿されるとサービスが止まってしまう文字コードですので、
utf8mb4_general_ci
にする必要があるかと思います。(MySQL, MariaDB)対応する場合は、ここらへん をmysqlのバージョンに合わせて書き換えればいいでしょうか。
既存システムはどうすればいいかな。変換する方法はあるようですが、こういった場合はどう対応するのがxoops流でしょうか。まずは新規システムだけでも対応したいところです。
The text was updated successfully, but these errors were encountered: