[英]How to display accented characters using NSMutableAttributedString?
在我的NSString
,我有一些帶重音的字符和html標簽,例如<i></i>
。 我想在帶有文本屬性的NSTextField
顯示它們。
構建attrStr時,我使用:
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithHTML:[text dataUsingEncoding:NSUTF8StringEncoding]
options:@{NSWebPreferencesDocumentOption : webPreferences}
documentAttributes:NULL];
我將文本顯示如下:
someTextField.attributedStringValue = attrStr;
但這需要我知道NSString
的編碼,但是問題是我不知道編碼。 那么,如何在不知道編碼的情況下構建屬性字符串呢?
您不需要知道NSString
的編碼-它是一個Objective-C字符串。 dataUsingEncoding:
的定義dataUsingEncoding:
狀態,重點添加:
返回一個
NSData
對象,該對象包含使用給定編碼編碼的接收器的表示形式。
此方法將從NSString
內部使用的任何編碼轉換為指定的編碼-因此,結果是您的情況是一個包含UTF8字符串字節的NSData
。
如果您看到無效的結果,那么問題可能出在創建原始NSString
?
高溫超導
附錄我現在看到您首先問了這個問題 (我添加了一個答案–基本上您需要知道或猜測)。 您為什么首先將文件讀入NSString
? 只需將其直接讀取到NSData
,然后讓HTML解析器對其進行分類即可(它將讀取HTML編碼標簽或默認為編碼)。
最終,我發現如果在上面使用NSUnicodeStringEncoding
,則重音字符將正確顯示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.