Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.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# GetEncoding(“西里尔文”)在.NET中生成所有文本问号_C#_.net_Encoding_Ascii_Non Ascii Characters - Fatal编程技术网

C# GetEncoding(“西里尔文”)在.NET中生成所有文本问号

C# GetEncoding(“西里尔文”)在.NET中生成所有文本问号,c#,.net,encoding,ascii,non-ascii-characters,C#,.net,Encoding,Ascii,Non Ascii Characters,为什么txt文本采用某种Unicode编码,为什么它的行为与以前ASCII编码的文本不同。所以我在GetEncoding之前做了下面的工作,现在它可以工作了 if(!txt.IsNormalized(NormalizationForm.FormKD)) { txt= txt.Normalize(NormalizationForm.FormKD); } 您正在使用西里尔字母编码将txt编码为字节格式,然后尝试假装数据

为什么txt
文本采用某种Unicode编码,为什么它的行为与以前ASCII编码的文本不同。所以我在GetEncoding之前做了下面的工作,现在它可以工作了

if(!txt.IsNormalized(NormalizationForm.FormKD))
            {
                txt= txt.Normalize(NormalizationForm.FormKD);
            }

您正在使用西里尔字母编码将
txt
编码为字节格式,然后尝试假装数据是ASCII,即使它不是。我可以发誓,这以前是有效的,并且会从保留有效字符的字符串中删除重音
ASCII
是7位US-ASCII。你想干什么?NET中不需要这样的代码,字符串是Unicode的,可以处理任何代码页。您正在尝试恢复被另一个错误的代码页转换损坏的文本吗?我想,假设您是为使用拉丁字母表的语言执行此操作的话。@MikeFlynn您将损坏误认为有效。和那个坏答案的作者一样。如果你问美国或英国以外的人,他们会告诉你这是行不通的,它会用破损的字符或
(在英国,名称中使用变音符号)替换非美国字符。正则表达式将删除损坏的字符。