c#中的UTF-8编码和解码

本文关键字:解码 编码 UTF-8 中的 | 更新日期: 2023-09-27 18:01:44

我搜索了"如何以utf-8格式编码数据"。关于这一点,我得到了最好的结果如下:

UTF8Encoding utf8 = new UTF8Encoding();
String unicodeString = "ABCD";
// Encode the string.
Byte[] encodedBytes = utf8.GetBytes(unicodeString);
// Decode bytes back to string.
String decodedString = utf8.GetString(encodedBytes);

但问题是,当我看到编码的数据,我发现不超过ASCII码。有人能帮助我提高我的知识吗?例如,当我传入ABCD时它被转换为65,66,67,68....我想这不是utf-8

c#中的UTF-8编码和解码

UTF-8当然是向后兼容ASCII的。您应该使用一些ASCII中不包含的字符进行测试。

如果你用c#编程,字符串已经用UTF-16编码了。你不会看到任何特别的东西。如果你想看到一些东西,你应该试着比较Byte[]的长度,当你把字符串编码成不同的编码。

查看维基百科关于UTF8的文章:Wikipedia.

从:

向后兼容性:单字节码仅用于ASCII码取值范围为0 ~ 127。在这种情况下,UTF-8代码具有相同的值作为ASCII码。这些代码的高阶位总是0。这意味着UTF-8可以用于期望8位扩展的解析器即使它们不是为UTF-8设计的。

这里的要点是,对于任何在UTF8中是ASCII 0-127的东西都是一样的。您需要尝试更多的扩展字符(本文中的一个例子是Euro符号)来了解它的不同之处。或者尝试大于127的ASCII值,您会看到它不同。