Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.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# 将文本从Windows-1252转换为iso-8859-1时出现问题_C# - Fatal编程技术网

C# 将文本从Windows-1252转换为iso-8859-1时出现问题

C# 将文本从Windows-1252转换为iso-8859-1时出现问题,c#,C#,我有一个编码为windows-1252的简单文本,我必须将此文本转换为iso-8859-1,但是文本的一部分没有转换,此部分ïï½应转换为I 案文: C�vel 要转换的代码: public static void Main() { string broken = "C�vel XPTO"; byte[] encoded = Encoding.GetEncoding(1252).GetBytes(broken); string corrected = Encod

我有一个编码为windows-1252的简单文本,我必须将此文本转换为iso-8859-1,但是文本的一部分没有转换,此部分
ïï½
应转换为
I

案文:

C�vel
要转换的代码:

public static void Main()
{
    string broken = "C�vel XPTO";
    byte[] encoded = Encoding.GetEncoding(1252).GetBytes(broken);
    string corrected = Encoding.GetEncoding("iso-8859-1").GetString(encoded);

    Console.WriteLine(corrected);
}
你知道怎么解决这个问题吗?我做了很多事情都没有成功


备注:我不想用
replace

替换这段文本。您不强制转换文本,而且您提到的两个代码页都是相同的拉丁语1。我怀疑您试图使用错误的代码页读取UTF8文件。单字节代码页每个字符使用一个字节,而不是2,在本例中是3。这是一个垃圾输入垃圾输出问题。“ë?½”是U+FFFD(替换字符)的utf8编码。文本解码器常用于表示遇到无法转换为字符的字节。因此,文本在您访问它之前已经损坏。NET(和Windows)中的字符串是UTF16-no if or but。所以它本身就证明了这一点——它是一个ASP.NET应用程序。不可能从两个完全不同的代码页写入
字符,更不用说
字符了。问题在于字符串是如何存储和实际代码的——它是如何加载的,从哪里加载的,以及为什么有人试图更改它的编码?问题的代码只会弄乱文本,而不会“解码”任何内容。不涉及编码。幸运的是,在这种情况下,它什么也不做-
这个字符编码是ISO 8859-1在可打印字符方面的超集,但与IANA的ISO-8859-1不同,它使用可显示字符而不是80到9F(十六进制)中的控制字符范围。
和`按HTML5标准应被视为相同的编码`@PanagiotisKanavos我正在使用HttpClient从网站下载此文本,我在下载文本时尝试指定编码,但也没有成功