C# GetEncoding(“西里尔文”)在.NET中生成所有文本问号
为什么txtC# 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编码为字节格式,然后尝试假装数据
文本采用某种Unicode编码,为什么它的行为与以前ASCII编码的文本不同。所以我在GetEncoding之前做了下面的工作,现在它可以工作了
if(!txt.IsNormalized(NormalizationForm.FormKD))
{
txt= txt.Normalize(NormalizationForm.FormKD);
}
您正在使用西里尔字母编码将txt
编码为字节格式,然后尝试假装数据是ASCII,即使它不是。我可以发誓,这以前是有效的,并且会从保留有效字符的字符串中删除重音ASCII
是7位US-ASCII。你想干什么?NET中不需要这样的代码,字符串是Unicode的,可以处理任何代码页。您正在尝试恢复被另一个错误的代码页转换损坏的文本吗?我想,假设您是为使用拉丁字母表的语言执行此操作的话。@MikeFlynn您将损坏误认为有效。和那个坏答案的作者一样。如果你问美国或英国以外的人,他们会告诉你这是行不通的,它会用破损的字符或?
(在英国,名称中使用变音符号)替换非美国字符。正则表达式将删除损坏的字符。