Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UTF-8在c语言中的编码和解码_C# - Fatal编程技术网

C# UTF-8在c语言中的编码和解码

C# UTF-8在c语言中的编码和解码,c#,C#,我搜索了如何以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.GetSt

我搜索了如何以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,当然是utf-8。您应该使用ASCII中未包含的某些字符进行测试


如果用C编程,字符串已经用UTF-16编码。在那里你不会看到什么特别的东西。如果你想看到一些东西,当你把字符串编码成不同的编码时,你应该试着比较一下字节[]的长度。

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

从那里:

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


这里的要点是,对于UTF8中的ASCII 0-127,它是相同的。你需要尝试更多的扩展字符,文章中的一个例子是欧元符号,看看它有什么不同。或者尝试一个大于127的ASCII值,您会发现它不同。

C中的字符串已经是UTF-16,为什么需要将其转换为UTF-8?A是65岁。这里没有问题。ASCII直接映射到UTF-8,无需任何更改。您需要非ASCII字符才能看到任何差异,例如,é或€Byte是数字类型,因此字节数组应包含数字,如果看到不同的内容,则会令人惊讶:@rakeshgupta我认为这不是utf-8-您认为错误感谢您的友好和简单的描述