c# - 我应该如何解码 UTF-8 字符串

标签 c# string utf-8

我有一个像这样的字符串:

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/

相关文章:

Java 点不匹配 'any character'

c# - 我的 .net 程序导致 BSOD

c# - 直接降序排列

python - 如何从 pandas 的列中删除列表中的字符串

php - UTF-8贯穿始终

mysql - Perl:如何将某个 MySQL 表视为 utf8

string - Groovy 说我的 Unicode 字符串太长

c# - WPF 应用程序广泛捕获关键的上/下事件

c# - 为什么我在尝试向 TFS 发送 REST 请求时收到 404 错误?

java - 如何在JAVA中去除除 "src"和 "alt"之外的HTML属性