我下载了一个库来处理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 ;
}
}
答案 0 :(得分:2)
我相信你用错误的编码打开文件。它似乎以UTF-8保存,而你以某种形式的ASCII +打开它。尝试强制将代码文件设置为UTF-8,它应该可以正常工作。
编辑:好的,我实际上已经下载了源代码并进行了检查,我相信它可能是偶然的双重编码。如果这些是唯一的问题,只需用正确的字符替换字符串内容(理想情况下使用\u2014
表示法,这不依赖于ASCII之外的代码文件编码)。
最终编辑:作者的名字让我失望了。该文件实际上是用中文(大陆)编码(windows-936
)编码的,而不是UTF-8。将文件转换为UTF-8,你应该没问题。在正确的编码中,¡ª
转为—
等。第二个实际上是–
。