gpt4 book ai didi

c# - 了解文本编码(在 .Net 中)

转载 作者:IT王子 更新时间:2023-10-29 04:47:12 25 4
gpt4 key购买 nike

我在文本编码方面做得很少。老实说,我什至不知道它到底是什么意思。

例如,如果我有这样的东西:

Dim myStr as String = "Hello"

是否以特定格式“编码”在内存中?该格式是否取决于我使用的语言?

如果我在另一个国家,例如中国,并且我有一串中文(普通话?如果我在这里使用了错误的词,我深表歉意)将是以下代码(我在英文字符串)仍然有效吗?

System.Text.UTF8Encoding encoding=new System.Text.UTF8Encoding();
return encoding.GetBytes(str);

或者当您将该 .Net 字符串转换为 UTF8Encoding 而该转换无效时,它会失去所有意义吗?

最后,我已经使用 .Net 工作了几年,我从未见过、听说过或不得不对 Encoding 做任何事情。我是异常(exception),还是不常见?

最佳答案

.NET 字符串类使用 UTF16 对字符串进行编码- 这意味着每个字符 2 个字节(尽管它允许两个字符的特殊组合形成一个 4 字节字符,即所谓的“代理对”)。

UTF8另一方面,将使用可变数量的字节来表示特定的 Unicode 字符,即常规 ASCII 字符只有一个字节,但中文字符可能需要 3 个字节。两种编码都允许表示所有 Unicode 字符,因此它们之间始终存在映射 - 两者都是相同 (unicode) 字符集的不同二进制表示(即用于存储在内存中或磁盘上)。

由于并非所有 Unicode 字符都能够放入 UTF-16 保留的原始 2 字节中,该格式还允许表示两个 UTF-16 字符的组合以形成 4 字节字符 - 这样形成的字符称为“代理”或代理对,是一对 16 位 Unicode 编码值,它们一起表示单个字符。

UTF-8 没有这个问题,因为每个 Unicode 字符的字节数不固定。可以收集到关于 UTF-8、UTF-16 和 BOM 的全面概述 here .

关于 Unicode 字符编码的出色概述/介绍是 The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets

关于c# - 了解文本编码(在 .Net 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5864272/

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