字符文字编译错误

时间:2014-03-04 16:52:41

标签: c#

我下载了一个库来处理RTF。它不会编译。它在字符文字上失败了,我无法弄清楚它是什么。

来源发布在SourceForge。问题出在RtfNodeGroup.cs中,它位于以下代码的末尾。 myStr.Append( '¨C' );

当我使用od查看字符序列时,它是ASCII'250 C'。

我知道文字中有两个字符。这是代码在SourceForge上发布的方式。有问题的代码块上面的代码块也失败了,但我将emdash的文字替换为如下:

    if( node.Keyword == "emdash")
    {
        AddString( myStr , buffer );
        myStr.Append( '\u2014');
        continue ;
    }

您认为它是什么?

else if( node.Type == RTFNodeType.Control || node.Type == RTFNodeType.Keyword )
{
    if( node.Keyword == "tab" )
    {
        AddString( myStr , buffer );
        myStr.Append( '\t' );
        continue ;
    }

    if( node.Keyword == "emdash")
    {
        AddString( myStr , buffer );
        myStr.Append( '¡ª');
        continue ;
    }

    if( node.Keyword == "" )
    {
        AddString( myStr , buffer );
        myStr.Append( '¨C' );
        continue ;
    }
}

1 个答案:

答案 0 :(得分:2)

我相信你用错误的编码打开文件。它似乎以UTF-8保存,而你以某种形式的ASCII +打开它。尝试强制将代码文件设置为UTF-8,它应该可以正常工作。

编辑:好的,我实际上已经下载了源代码并进行了检查,我相信它可能是偶然的双重编码。如果这些是唯一的问题,只需用正确的字符替换字符串内容(理想情况下使用\u2014表示法,这不依赖于ASCII之外的代码文件编码)。

最终编辑:作者的名字让我失望了。该文件实际上是用中文(大陆)编码(windows-936)编码的,而不是UTF-8。将文件转换为UTF-8,你应该没问题。在正确的编码中,¡ª转为等。第二个实际上是