如何使用NSMutableAttributedString显示重音字符?

时间:2016-08-14 08:45:29

标签: html cocoa encoding nsstring

在我的(defn my-test-fixture [f] (mount/start) (f)) (use-fixtures :once my-test-fixture) 中,我有一些重音字符和html标签,例如NSString。我想在<i></i>中显示带有文本属性的文件。

当我构建attrStr时,我使用:

NSTextField

我显示的文字如下:

NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithHTML:[text dataUsingEncoding:NSUTF8StringEncoding]
                                                                   options:@{NSWebPreferencesDocumentOption : webPreferences}
                                                        documentAttributes:NULL];

但是这需要我知道someTextField.attributedStringValue = attrStr; 的编码,但问题是我不知道编码。那么如何在不知道编码的情况下构建属性字符串呢?

2 个答案:

答案 0 :(得分:0)

您不需要知道NSString的编码 - 它是一个Objective-C字符串。 dataUsingEncoding:州的定义,重点补充:

  

返回一个NSData对象,其中包含使用给定编码编码的接收器的表示。

此方法将内部使用的编码NSString转换为指定的编码 - 因此结果就是包含UTF8字符串字节的NSData。 / p>

如果您看到无效结果,则问题可能是您创建原始NSString时的问题?

HTH

附录我现在看到你先问this question(我添加了答案 - 基本上你需要知道或猜测)。为什么你首先将文件读入NSString?只需将其直接读入NSData,然后让HTML解析器对其进行排序(它将读取HTML编码标记或默认为编码)。

答案 1 :(得分:0)

最后,我发现如果我在上面使用NSUnicodeStringEncoding,重音字符将会正确显示。