我正在开发一个节点模块,它解析RTF文件并执行一些查找和替换操作。我已经为用转义的unicode here表示的特殊字符想出了一个解决方案,但在遇到CJK字符时遇到了困难。在JavaScript中,有没有一种简单的方法来完成这些转换,无论是使用库还是内置?
示例:
以纯文本格式查看的RTF文件包含:
Now testing symbols {鈴:200638d}在NodeJS中解析时,该文件的这一部分如下所示:
Now testing symbols \{
\f1 \'e2\'8f
\f0 :200638d\}\我知道\f1和\f0表示字体更改,而\'e2\'8f块是实际的字符...但是,如何获取\'e2\'8f并将其转换回鈴,或者反过来,将鈴转换为\'e2\'8f?
我试着用不同的编码查找这个字符,但没有看到任何与\'e2\'8f有一点相似的东西。我知道RTF控件\'hh是A hexadecimal value, based on the specified character set (may be used to identify 8-bit values) (source),或者更好的定义来自Microsoft RTF Spec;%xHH (OCTET with the hexadecimal value of HH) (download),但我不知道如何处理这些信息来进行转换。
发布于 2019-12-07 01:12:07
我能够使用my RTF parser解析您的示例文件,并检索到正确的字符。
关键是\fonttbl命令,顾名思义,它定义了文档中使用的字体。作为每种字体定义的一部分,\fcharset命令确定要与该字体一起使用的字符集。您需要使用它来正确解释字符数据。
我的解析器将\fcharset的参数映射为Codeset名称here,然后将其转换为可用于检索正确的Charsethere的字符集名称。当你在Javascript中工作时,你的字符集处理显然是不同的,但希望这些信息能帮助你前进。
https://stackoverflow.com/questions/59105080
复制相似问题