簡體   English   中英

如何使用NSMutableAttributedString顯示帶重音符號的字符?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM