2013-04-08 3 views
5

Я показываю NSString в UIWebview, чтобы показать текст с пользовательскими смайлами (изображениями), но у меня возникли проблемы, поскольку UIWebview не может обнаружить специальные символы, такие как \ n, \ r, \ t, whitespaces, &, <,> и многое другое. Как преобразовать строку NSString в HTML для загрузки в UIWebView?NSString to HTML

+0

Вы можете написать все это с HTML-теги .. Вместо только строки .. – iphonic

+0

строка не static.It является переменной, поэтому я писать algo, чтобы преобразовать его в html –

+0

Еще много? О каких других управляющих персонажах вы говорите? –

ответ

3

Для этого нет встроенного решения. Вы должны кодировать объекты HTML. Существует проект с открытым исходным кодом под названием NSString-HTML, который может удовлетворить ваши потребности.

Существует также хорошая категория NSString here, которая основана на Google's Toolbox.

+1

1-я библиотека не решает проблему, но она выглядит как 2-я библиотека может решить мою проблему. Я уже видел эту библиотеку, прежде чем публиковать этот вопрос, но не мог понять метод моего интереса. –

+1

Возможно, вас заинтересует 'stringByEncodingHTMLEntities' (и' stringWithNewLinesAsBRs'). –

0

Вы пытались преобразовать строку HTML в формат UTF8 и загрузить ее в веб-представление?

[webView loadData:[html dataUsingEncoding:NSUTF8StringEncoding] 
        MIMEType:@\"text/html\" 
      textEncodingName:@\"UTF-8\" 
         baseURL:nil]; 
+0

Я не мог понять –

+0

Неудивительно, что вы не поняли !! Извините, я понял вопрос неправильно. Я сделаю быстрый поиск и отредактирую ответ, если что-нибудь получу. –

+0

@Shubham посмотреть, если это поможет .. извините снова .. :) –

0

Вы ищете трансформацию ICU. Эта функциональность завернута в функцию CFString API CFStringTransform() Использование опции преобразования Any-Hex Возможно, вы захотите оптимизировать, создав NSCharacterSet только для глифов, которые NEED должны быть экранированы.

1

Существует фактически встроенное решение для этого ... В NSAttributedString. Вот категория NSString, что делает его легко:

@interface NSString (HTMLString) 
- (NSString *)HTMLString; 
@end 

@implementation NSString (HTMLString) 
- (NSString *)HTMLString { 
    NSDictionary * const exportParams = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType}; 
    NSAttributedString *attributed = [[NSAttributedString alloc] initWithString:self]; 
    NSData *htmlData = [attributed dataFromRange:NSMakeRange(0, attributed.length) documentAttributes:exportParams error:nil]; 
    return [[NSString alloc] initWithData:htmlData encoding:NSUTF8StringEncoding]; 
} 
@end