我有一个AttributedString,我以编程方式生成名称和地址。两者都可以包含变音符号,例如é,ü,î等。它们在NSTextView中正确显示(这是在macOS上)
但是当我将其保存为RTF文档时,Apple并没有用正确的RTF编码替换变音符号,因此Grüter
突然变为Grüter
。 ü的正确rtf编码是\'fc
我仔细检查了Apple的RTF Files and Attributed Strings和Formatted Documents and Attributed Strings文档以及NSCharacterEncodingDocumentAttribute无济于事。 我已经为RTF标签编码器写了一个基本的unicode值,但我目前只使用复合unicode标量,比如
也许我错过了一些完全明显的东西,或者这是Apple的RTF编写实现中的错误?
答案 0 :(得分:0)
好的,我在https://github.com/axello/AttributedRTF创建了一个游乐场,以弄清楚我做错了什么。我想通了。
首先,我做错了:我将导入 RTF文本转换为String,操作某些标签并插入新文本。我在字符串级别执行此操作,以保持RTF标记完整。这适用于所有标签和ASCII文本。
然而,当我随后导出字符串时,带有变音符号的所有插入字符串都没有转换为正确的RTF代码,因为它假设字符串只是一堆数据。
在我的操场上你可以玩这个:
简而言之:我需要导入不是作为字符串,而是作为AttributedString,并插入AttributedStrings,这稍微麻烦一些。然后我可以导出将AttributedString作为RTF,并将变音符号正确转换为RTF。