通过将单个字符短缺的大小减少到 1 字节(7 位)来缩短使用 UTF8 编码的 db 的大小 [已关闭]

Shorten the size of db with UTF8 encoding by reducing the size of single character shortage to 1 byte(7 bit) [closed]

提问人:Jasmine John 提问时间:11/21/2020 更新时间:11/21/2020 访问量:199

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

3年前关闭。

我需要减小 sql 数据库的大小。我的数据库字符串是 UTF8 编码,因为它是一种不同的语言。 为每个字符分配 2 个字节,因为该语言几乎包含 100 个字符用于表示。如何将这些 16 位字符转换为 7 位字符以缩短数据库大小。

Java Android 编码 UTF-8

评论

2赞 Mat 11/21/2020
UTF-8 是一种可变长度编码。只需要 7 位的代码点已经存储在单个字节(8 位)中。
0赞 Basil Bourque 11/21/2020
我们对您问题的含义存在一些分歧。编辑以澄清。举例说明正在存储的文本。– Basil Bourque 6分钟前 删除
0赞 AmigoJack 11/21/2020
该数据库甚至能够存储 7 位吗?“字节”(8 位)以外的边界很少见,尤其是在 Java 和 Android 周围。

答:

2赞 Basil Bourque 11/21/2020 #1

我的数据库字符串是 UTF8 编码,因为它是一种不同的语言。为每个字符分配 2 个字节

如何将这些 16 位字符转换为 7 位字符

不,这是一个矛盾。

UTF-8 中,只需要 7 位 (US-ASCII) 的字符只需要 8 位(一个八位字节)。UTF-8 为每个字符使用 1、2、3 或 4 个八位字节,具体取决于字符的码位编号的大小。

相比之下,UTF-16 为每个字符使用一对或多对八位字节。

最好一般使用 UTF-8。UTF-16 被一些人认为是有害的。

推荐阅读: 每个软件开发人员绝对、肯定地必须了解 Unicode 和字符集的绝对最低限度(没有任何借口!

评论

0赞 blackapps 11/21/2020
没有矛盾。该语言的字符在 utf8 中占用两个字节,您可以读取。
0赞 Basil Bourque 11/21/2020
@blackapps 问题的最后一句话表明情况并非如此。
0赞 blackapps 11/21/2020
16 位是两个字节,所以这就是所说的。
0赞 Basil Bourque 11/21/2020
@blackapps 标题也暗示了其他情况。我发表了一条评论要求澄清,因为这个问题显然不清楚。
0赞 blackapps 11/21/2020 #2

您应该使用语言的字符集。

就像在你还没有使用 utf 的时候所做的那样,而是每个字符一个字节的集合。