首頁  >  文章  >  資料庫  >  關於MySQL中儲存的全角字符以及半角字符的區別詳解

關於MySQL中儲存的全角字符以及半角字符的區別詳解

黄舟
黄舟原創
2017-05-28 09:55:223042瀏覽

這篇文章主要介紹了MySQL儲存全角字元和半角字元的區別的相關資料,需要的朋友可以參考下

很不巧公司內測IM的時候又遇到MYSQL_DATA_TRUNCATED錯誤,日誌記錄還是在mysql_stmt_fetch呼叫的時候出現的。鑑於先前的經驗,應該是給定的結果集綁定區域長度不夠造成的,反覆檢查了好多遍沒發現問題。我在程式碼中都是對應的關係,像是char(20),我程式碼中就會定義char buffer[20]陣列來儲存。看起來如此的正確完美。後面沒辦法只好印出每一行的數據,找到報錯的那一行記錄,發現字體和別的不一樣。例如:

123456789(半角)
123456789(全角)

這不是我輸入空格控制的,而是輸入法全角半角控制的。對於全角字符,它是半角字符長度的兩倍,而我的MySQL使用了utf-8,所以在數據庫中那就是一個全角字符長度是3個字節。

select length(column) from table_name where…;

用這個來印出長度就可以判斷。這時候你就要考慮一個程式碼中類型的長度和資料庫欄位長度匹配的問題了,例如全角字元或中文字元。資料庫中的char(20)代表的是20個字符,而不是20個字節,這裡要注意,所以取資料的時候千萬不要全部使用這個20來做結果集長度來取資料。

以上是關於MySQL中儲存的全角字符以及半角字符的區別詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn