mysql - Latin 与 utf8 字符集和索引使用(mysql 5.5)

标签 mysql utf-8 character-encoding

我对拉丁语与utf8的理解如下:

“latin仅支持拉丁字符(如英语),但utf8支持所有国际语言,如法语、中文、阿拉伯语等(甚至不完全支持,因为它每个字符使用3个字节,而应该使用每个字符4个字节来照顾)所有国际 utf8 字符)。根据标准拉丁语在 1 个字节中存储 1 个字符,而 utf8 在 1-3 个字节中存储 1 个字符。但是如果我们将所有字符存储在拉丁语中,即使在 utf8 类型列中,那么它将在 1 个字节中存储 1 个字符。 ”

latin vs utf8 索引:“列值根据列中的每个字符和字符集类型采用字节,但索引始终以字节为单位存储值。”

请有人解答我的以下疑问,我将非常感激。

假设有一个 title varchar(250) 列,并且其上有一个索引,如 Alter table mytable add index (title(16)) in utf8 charset type table;

如果此列包含字符串“This is my Title”,其中包含 16 个字符且全是拉丁文。然后清除以下查询:

1) 由于字符串包含 16 个字符且均为拉丁类型,因此即使表字符集是 utf8 或其他字符,它也只能存储 16 个字节。

2) 16 个字节的索引足以处理这 16 个字符的字符串,否则。

谢谢

扎法尔

最佳答案

1) 是的。 2)是的。

请注意,“latin”不是字符编码。人们通常称之为 latin-something 的编码,例如 MySQL 的“latin1”,包含以 UTF-8 编码时需要 2 或 3 个字节的字符。它是 ASCII 字符,可以用 UTF-8 中的一个字节来存储。

关于mysql - Latin 与 utf8 字符集和索引使用(mysql 5.5),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21720990/

相关文章:

ios - 如何查看该字符串的真实内容?

java - UTF-8解码问题

java - 如何检测文本文件是否使用 Windows-1256 编码?

mysql - 推进对象集合将列别名绑定(bind)到外部表对象,而不是将其取出

utf-8 - UTF8 和 UTF-8 之间的正确术语

character-encoding - 为什么使用 ExecuteGlobal 导入 .vbs 函数库文件时,VBScript 会显示 "Invalid Character"?

python - 使用 latin1 字符集对表中的 UTF8 数据进行编码

java - 客户端计算机上的 Applet JDBC 连接失败

mysql - 如何仅在 Rails 中使用时间数据类型?

mysql - 你如何基于一列连接两个表,除非它为空,在这种情况下,基于两个不同的列连接