RTF中的撇号问题

时间:2010-02-15 09:51:23

标签: unicode encoding rtf

我在自定义CRM Web应用程序(大约2003年的旧VB.Net)中有一个功能,它从数据库中获取一组字段,并将它们与一组基于RTF的模板文档中的palceholders合并。这些生成合并的字母和文档。代码基本上循环遍历RTF模板文件的每一行,并用数据库记录中的文本替换占位符值的任何实例。我遇到的问题是用户已将某种类型的撇号粘贴到Web应用程序中(因此进入数据库),而这些撇号在生成的RTF文件中无法正确呈现。它呈现如下 - “

我需要一种方法来在代码中发现这个无效的撇号并用有效的撇号替换它。不幸的是,当我将无效的撇号粘贴到Visual Studio编辑器中时,它会转换为正确的撇号。所以我需要另一种方式来表达这个无效的撇号值。不幸的是,我对unicode和其他编码知之甚少,所以我正在呼救这个。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果你真的只想弄清楚角色是什么,你可以尝试将其粘贴到ultraedit等文本编辑器中。它有一个十六进制模式,您可以翻转以查看实际的底层字节。

为了在你想出角色后进行替换你会在Vb中做这样的事情,

text.Replace(ChrW(2001), "'")

请注意,您可能无法使用文本编辑器轻松解决问题,因为它也可能会因剪贴板粘贴而受到损坏。您可能希望从代码中打印一些ascii值的调试。您可以使用AscW功能来执行此操作。

我不禁想到它实际上只是指定在写出流时使用的正确编码的情况。假设您正在使用StreamWriter,您可以在构造函数上指定它。我猜你实际上想要ASCII符合你的要求。

    oWriter = New System.IO.StreamWriter(path, False, System.Text.Encoding.ASCII)

答案 1 :(得分:0)

看起来你可能想要编码8位范围内的字符(> 255)。

您可以根据wikipedia article使用\ uNNNN来执行此操作。