2013-04-08 8 views
5

Tôi đang hiển thị NSString trong UIWebview để hiển thị văn bản có biểu tượng mặt cười tùy chỉnh (hình ảnh) nhưng tôi gặp rắc rối vì UIWebview không thể phát hiện các ký tự đặc biệt như \ n, \ r, \ t, khoảng trắng, &, <,> và nhiều hơn nữa của chuỗi. Làm thế nào để chuyển đổi một chuỗi NSString thành chuỗi HTML để tải trong một UIWebView?NSString thành HTML

+0

Bạn có thể viết toàn bộ điều với thẻ html .. Thay vì chỉ chuỗi .. – iphonic

+0

chuỗi không static.It có thể thay đổi vì vậy tôi đã viết algo để chuyển đổi nó thành html –

+0

Nhiều hơn nữa? Bạn đang nói về các nhân vật điều khiển nào khác? –

Trả lời

3

Không có giải pháp tích hợp cho điều đó. Bạn phải mã hóa các thực thể HTML. Có một dự án mã nguồn mở được gọi là NSString-HTML có thể phù hợp với nhu cầu của bạn.

Ngoài ra còn có danh mục NSString tốt here, dựa trên Google's Toolbox.

+1

thư viện thứ nhất không giải quyết được sự cố nhưng có vẻ như thư viện có thể giải quyết vấn đề của tôi. Tôi đã thấy thư viện đó trước khi đăng câu hỏi này nhưng không thể tìm ra phương pháp quan tâm của tôi –

+1

Bạn có thể quan tâm đến 'stringByEncodingHTMLEntities' (và' stringWithNewLinesAsBRs'). –

0

Bạn đã thử chuyển đổi chuỗi HTML sang định dạng UTF8 và sau đó tải nó trong chế độ xem web?

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

Tôi không thể hiểu được –

+0

Không có thắc mắc Bạn không hiểu !! Xin lỗi tôi đã hiểu sai câu hỏi. Tôi sẽ tìm kiếm nhanh và chỉnh sửa câu trả lời nếu tôi nhận được gì đó. –

+0

@Shubham xem nếu điều này giúp .. xin lỗi một lần nữa .. :) –

0

Bạn đang tìm kiếm Chuyển đổi ICU. Chức năng này được bao bọc trong chức năng CFString API CFStringTransform() Sử dụng tùy chọn biến đổi Any-Hex Bạn có thể muốn tối ưu hóa bằng cách tạo NSCharacterSet chỉ có các glyph cần phải được thoát.

1

Có thực tế là một giải pháp tích hợp cho điều này ... Trong NSAttributedString. Dưới đây là một phạm trù cho NSString mà làm cho nó dễ dàng:

@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