マイクロチャネルニックネーム特殊記号原因に格納されているMySQLの:(誤った文字列値:行1の「xxxx'for列 『名称』)異常

例外があったとき、例外情報は次の通りれる今日がセールスマンの反応、編集者の情報は:
ここで誤った文字列の値に:「xFOx9Fx92x9D vxE6 .. 『Fまたは列』名前「AT行1
私は、参照するには、スクリーンショットを送信するために彼女に尋ねましたこれは、ユーザーのニックネームが以下のようにすることが分かりました。

芸術作品

ニックネームは、マイクロチャネルのニックネームですが、また少し、いくつかの特殊な記号をもたらすでしょうか、例外がデータベースによってスローされているので、私たちはフィールドの文字セットを見たい場合があります。

だから

1〜6個のバイトからUTF-8形式の最初の使用は、最大31個の文字を符号化することができます。UTF-8最新の仕様のみを1〜4個のバイト、21缶コーディング最大、単にすべてのUnicode面17を表します。

MySQLのUTF8はUTF-8文字、実質的に平面、複数のUnicodeテキストでに3つのバイトまでサポートし、キャラクタ・セットです。

UTF8でのMySQLのみをサポートは、UTF-8文字に3つのバイトを保持する理由は?私はそれは、まだ言っていないUnicodeの補助プレーンを開発し始めてMySQLのでしょう、おそらくので、一瞬思いました。その時、Unicodeの委員会もやって夢「の世界を中心に十分65535の文字は、単語を使用します」。文字数のMySQLの文字列の長さをカウントではなく、データ型のバイト数がCHARである、文字列を保持するために十分な長さである必要があります。UTF8文字セット、最長文字長の長さを維持する必要が乗算UTF8文字列の長さである場合、ので、ここでUTF8が自然例えばCHARとして、3の最大長を制限する(100)MySQLは、長さが300のバイトを保持します。それ以降のバージョン4バイトのサポートで、なぜないUTF-8文字として、私は1つは、後方互換性のためであると考え、基本多言語面は確かにほとんど使用されませんを超えて文字があります。

要在 Mysql 中保存 4 字节长度的 UTF-8 字符,需要使用 utf8mb4 字符集,但只有 5.5.3 版本以后的才支持(查看版本: select version();)。我觉得,为了获取更好的兼容性,应该总是使用 utf8mb4 而非 utf8. 对于 CHAR 类型数据,utf8mb4 会多消耗一些空间,根据 Mysql 官方建议,使用 VARCHAR 替代 CHAR。

我们尝试作出修改:

将utf8字符集修改为utf8mb4之后,通知业务员重新操作。业务员反应操作成功了。。。心里美滋滋

おすすめ

転載: www.cnblogs.com/yn869251541/p/12331224.html