使用UTF8作为字符集与使用latin1相比有哪些优点/缺点?

如果utf能够支持更多的字符,并且一直被使用,它不是总是更好的 Select 吗?有什么理由 Select 拉丁语吗?

推荐答案

latin1的优点是它是单字节编码,因此可以在相同的存储空间中存储更多的字符,因为MySQL中字符串数据类型的长度取决于编码.这本手册states

为了计算用于存储特定字符的字节数, VARCHAR或TEXT列值,则必须考虑 用于该列的字符集以及值是否包含 多字节字符.特别是在使用UTF8 Unicode时 字符集,您必须记住并非所有字符都使用 相同的字节数.utf8mb3和utf8mb4字符集可能需要 每个字符最多分别为三个和四个字节.对于 用于不同类别的utf8mb3或 utf8mb4个字符,请参阅第10.9节"Unicode支持".

此外,使用单字节编码时,许多字符串操作(如获取子串和依赖于排序规则的比较)速度更快.

在任何情况下,如果您关心国际化,latin1都不是一个重要的竞争者.当您要存储已知的安全值(例如百分比编码的URL)时,它可能是一个合适的 Select .

Database相关问答推荐

如何使授权服务器与外部数据库保持同步?

1-2400之间格式奇怪的时间数据

如何决定使用数据库事务

数据库模式 - location

TSQL - 表值函数中的 If..Else 语句 - 无法通过

使用 LiquiBase 和 Spring 将大量值(使用 FK)插入数据库

如何将开发数据库更改移动到生产数据库?

库存数据库的最佳 struct

在 sql server 中存储持续时间(时间跨度)

什么是表前缀?

如何在磁盘上布局 B-Tree 数据?

Slick 3.0 在数据库驱动程序级别是reactive/asynchronous的吗?对于哪些数据库?

存储并仍然索引加密客户数据的最佳方式是什么?

有没有一种简单的方法来告诉 alembic 迁移到特定版本?

SQL Server 自动备份

使用 C3P0 的 JDBC 连接池

在连接表中,Rails 缺少组合键的最佳解决方法是什么?

SQLite3 数据库的最大连接数是多少?

如何从多个表中 Select 不同的值

Chrome 将其 SQLite 数据库保存到哪里?