この記事では主にMySQL全角文字と半角文字の保存の違いに関する関連情報を紹介します
残念ながら、IMの内部テスト中に再びMYSQL_DATA_TRUNCATEDエラーが発生しました。 、ログ レコードはまだ mysql_stmt_fetch にありました。呼び出されたときに表示されます。以前の経験を考慮すると、指定された結果セットのバインディング領域の長さが不十分であることが原因であるはずです。何度も確認しましたが、問題は見つかりませんでした。コード内に char(20) などの対応関係があります。コードでは、格納する char バッファ[20]配列を定義します。とても正しくて完璧に見えます。仕方なくデータの各行を印刷し、エラーが報告されたレコードの行を見つけたところ、フォントが他の行と異なることがわかりました。例:
123456789 (半角)
123456789 (全角)
これは私のスペースの入力ではなく、全角と半角の入力方法で制御されます。全角文字の場合、半角文字の 2 倍の長さになります。私の MySQL では utf-8 を使用しているため、データベース内では 3 バイトの長さの全角文字になります。
select length(column) from table_name where…;
これを使用して長さを印刷すると、長さを判断できます。このとき、コード内の型の長さと全角文字や漢字などのデータベースフィールドの長さを一致させる問題を考慮する必要があります。データベース内の Char(20) は、20 バイトではなく 20 文字を表します。データをフェッチするときは、20 文字すべてを結果セットの長として使用しないでください。
以上がMySQLに格納される全角文字と半角文字の違いを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。