簡體   English   中英

MySql Sequel Pro 上表情符號的 varchar 長度

[英]MySql varchar length for emojis on Sequel Pro

我在 Linux 上使用 MySql 版本 5.6.46。 我有一個列name varchar(50) COLLATE utf8mb4_binENGINE=InnoDB DEFAULT CHARSET=utf8mb4

當我試圖向表中插入一些數據時。 我發現,

對於a (utf8 中的 1 個字節),它最多可以存儲 50 個。

for(utf8 3字節,漢字love),最多可存儲50個。

為了 (utf8 中 4 個字節,十六進制F09F9881 ),它最多可以存儲 25 個。

這讓我很困惑。 為什么 Mysql 不將一個表情符號視為一個字符? 如果 Mysql 執行字節數限制並且不正確地使用每個字符 3 個字節,我希望它可以存儲 50*3/4=37。 Mysql到底是怎么做限制的?

- - - - - 更新 - - - - - - -

感謝您的回復,我明白了。 我在 MacOS X 上,我使用的是Sequel Pro 1.1.2 當我在軟件的 UI 中編輯表格內容時,最大為 25 個表情符號,並且敬酒警告maximum text length is set to 50

然后我在服務器set name = X'F09F9881...F09F9881'上嘗試了原始十六進制方法,它可以完美容納 50 個表情符號。

所以這是一個 Sequel Pro 問題。 我將在這個問題中添加Sequel Pro標簽。 希望這會幫助遇到同樣問題的人。 謝謝

不需要算術。

varchar(50)

可容納 50 個任意類型的字符 這將占用最多 202個字節(隱藏長度字段為 4 * 50 + 2)。

要調試您的情況,請提供:

SELECT VARIABLES LIKE 'char%';

SELECT col, HEX(col) FROM ...  -- to show what was stored.

暫無
暫無

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

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