我有一个像这样的字符串:
About \xee\x80\x80John F Kennedy\xee\x80\x81\xe2\x80\x99s Assassination . unsolved mystery \xe2\x80\x93 45 years later. Over the last decade, a lot of individuals have speculated on conspiracy theories that ...
我知道 \xe2\x80\x93
是破折号。但是我应该如何在 C# 中解码上述字符串?
最佳答案
如果你有一个这样的字符串,那么你一开始解码它时就使用了错误的编码。没有“UTF-8 字符串”,UTF-8 数据是将文本编码为二进制数据(字节)的地方。当它被解码成一个字符串时,它就不再是 UTF-8 了。
当您从二进制数据创建字符串时,您应该使用 UTF-8 编码,一旦使用错误的编码创建字符串,您将无法可靠地修复它。
如果没有其他选择,您可以尝试使用创建它时所用的相同错误编码再次对其进行编码来修复该字符串,然后使用正确的编码对其进行解码。然而,不能保证这对所有字符串都有效,一些字符会在错误的解码过程中丢失。示例:
// wrong use of encoding, to try to fix wrong decoding
str = Encoding.UTF8.GetString(Encoding.Default.GetBytes(str));
关于c# - 我应该如何解码 UTF-8 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22468026/