我需要将unicode字符转换为ansi字符
byte[] encode = Encoding.Convert(Encoding.Unicode, Encoding.Default, report);
我使用这段代码。在我看到这个时,我发现了额外的?字符已添加 在第一部分
?FF EE 20 12
答案 0 :(得分:2)
如果您发布了输入字符串以及输出,那将会很有帮助。
Encoding.Convert()会输出'?'当它试图转换源中没有目标编码中相应字符的字符时。
输出开头的序列看起来非常接近字节顺序标记(BOM)。 ANSI代码页没有这些,所以如果您的Unicode流在开始时有BOM,您可以尝试在将数据传递给转换器之前将其剥离。
答案 1 :(得分:1)
在这种特殊情况下,您的输入数据看起来包含不应该存在的内容(参见Michael's answer)。
在一般情况下,在编码之间进行转换时,您可以使用EncoderReplacementFallback
类实现自己的编码回退机制。对于不受支持的字符,您可以轻松地将其返回为空。只需提供一个Encoding
,在转换时使用您的后备广告。