当我们将字节内容从unicode转换为ansi字符时,如何删除(?)

时间:2008-12-26 05:03:03

标签: .net unicode character-encoding

我需要将unicode字符转换为ansi字符

byte[] encode = Encoding.Convert(Encoding.Unicode, Encoding.Default, report);

我使用这段代码。在我看到这个时,我发现了额外的?字符已添加 在第一部分

?FF EE 20 12

2 个答案:

答案 0 :(得分:2)

如果您发布了输入字符串以及输出,那将会很有帮助。

Encoding.Convert()会输出'?'当它试图转换源中没有目标编码中相应字符的字符时。

输出开头的序列看起来非常接近字节顺序标记(BOM)。 ANSI代码页没有这些,所以如果您的Unicode流在开始时有BOM,您可以尝试在将数据传递给转换器之前将其剥离。

答案 1 :(得分:1)

在这种特殊情况下,您的输入数据看起来包含不应该存在的内容(参见Michael's answer)。

在一般情况下,在编码之间进行转换时,您可以使用EncoderReplacementFallback实现自己的编码回退机制。对于不受支持的字符,您可以轻松地将其返回为空。只需提供一个Encoding,在转换时使用您的后备广告。