簡體   English   中英

如何查看存儲在MySQL列中的原始字節?

[英]How can I see raw bytes stored in a MySQL column?

我有一個MySQL表正確設置為UTF-8字符集。 我懷疑插入到我的一個列中的一些數據已被雙重編碼。 我期待看到一個不間斷的空格字符(UTF-8 0xC2A0),但是從該表中選擇此列時我得到的是四個八位字節(0xC3A2 0xC2A0)。 這就是我期望看到的,如果在某些時候有人將UTF-8 0xC2A0視為ISO-8859-1,則在插入MySQL之前嘗試再次編碼為UTF-8。

我上面看到四個八位字節的測試涉及用Perl的DBD :: mysql從MySQL中選擇這個列。 我想將Perl和DBD :: mysql排除在等式之外,以驗證這四個八位字節實際上是MySQL存儲的內容。 有沒有辦法直接使用SQL查詢?

mysql> SELECT HEX(name) FROM mytable;
+-----------+
| hex(name) |
+-----------+
| 4142C2A0  | 
+-----------+

您可以嘗試使用HEX()函數[ http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_hex] 從文檔中, SELECT HEX('abc'); 返回616263

為什么不試試BINARY運算符?

“BINARY運算符將其后面的字符串轉換為二進制字符串。這是一種簡單的方法,可以逐字節而不是逐字符地強制進行列比較。”

http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM