gpt4 book ai didi

encode - unicode/utf-8/utf-16和我本地编码GBK有什么关系?

转载 作者:行者123 更新时间:2023-12-05 01:07:32 27 4
gpt4 key购买 nike

我注意到我在 Windows(中文版)上的文本文件在移植到 Ubuntu 时变成了乱码。
经过更多研究,我知道 Windows CN 版本的默认编码是 GBK,而 Ubuntu 是 utf-8,而 iconv可以做encode翻译,例如从GBK到utf-8:

iconv -f gbk -t utf-8 input.txt > output.txt

但我仍然对这些编码的关系感到困惑。这些是什么?它们之间的相同点和不同点是什么?

最佳答案

首先,它与操作系统无关,而与您用来读取文件的程序有关。

在裸 .txt 上,程序必须能够猜测编码,这并不总是可能的,但可能会起作用。在 html 上,编码作为元数据给出,因此浏览器不需要这样做。

二、你懂ASCII吗?你看到它是如何通过数字来表示符号的吗?如果不是,这是您的第一件事should learn now .

接下来,大家看到Unicode和UTF-XXX的区别了吗?您必须清楚,Unicode 只是数字(代码点)到字形(符号,包括汉字、ASCII 字符、埃及字符等)的映射。

另一方面,UTF-XXX 表示,给定一串字节,它们代表哪些 Unicode 数字(代码点)。因此,UTF-8 和 UTF-16 是表示 Unicode 的不同有效方式。

正如您想象的那样,与 ASCII 不同,UTF 和 GBK 都必须允许每个字符超过 1 个字节,因为它们的字节数远远超过 256 个。

在 GBK 中,所有字符都编码为 1 或 2 个字节。
由于 GBK 专门用于中文,因此它平均比 UTF-XXX 使用更少的字节来表示给定的中文文本,而更多地用于其他语言。

在 UTF-8 和 16 中,每个字形的字节数是可变的,因此您必须查看中文代码点使用了多少字节。

在 Unicode 中,中文字形位于 following ranges .然后,您必须查看 UTF-8 和 UTF-16 表示这些范围的效率。

根据维基百科关于 UTF-8 和 UTF-16 的文章,中文字形 4E00-9FFF 的第一个也是最常见的范围在 UTF-8 中表示为 2 或 3 个字节,而在 UTF-16 中则表示为 2 个字节。因此,如果您要使用大量中文,UTF-16 可能更有效。您还必须查看其他范围以查看每个字符使用了多少字节。

对于可移植性,最好的选择是 UTF,因为 UTF 几乎可以表示任何可能的字符集,因此观众更有可能被编程为正确解码。 GBK 的大小增益并没有那么大。

关于encode - unicode/utf-8/utf-16和我本地编码GBK有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18426498/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com