0

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

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

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

?FF EE 20 12

4

2 回答 2

2

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

Encoding.Convert() 将输出一个“?” 当它试图转换在目标编码中没有对应字符的源中的字符时。

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

于 2008-12-26T05:17:54.623 回答
1

在这种特殊情况下,您的输入数据似乎包含不应该存在的内容(参见迈克尔的回答)。

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

于 2009-03-15T18:50:19.817 回答