【发布时间】:2011-06-23 08:22:46
【问题描述】:
这是我遇到的问题。 iPhone上的程序应该与服务器同步,服务器也与Web版本的服务同步。 Web 服务以 HTML 代码(amp;、quote;、№ 等)将字符串中的特殊字符发送到服务器。我需要显示这些数据,这就是为什么我需要将这些符号转换为 xcode 可以解码和绘制的东西。 正如我所发现的,以 Unicode 结尾的 HTML 代码是相同的,差异仅在于格式(例如 HTML 中的 № 是 Unicode 中的 \u8470)。我试过在字符串中更改这种格式并将其编码为 UTF8。结果,现在我有了一个函数:
+(NSString *) replaceHTMLCodes:(NSString *)text{
NSLog(@"replacing HTML codes");
if (text){
NSLog(@"%@", text);
NSString *tmpString=[NSString stringWithString:text];
tmpString = [text copy];
NSString *tmpText = @"";
int locAmp = [tmpString rangeOfString:@"&#"].location;
NSString * Code = @"";
int locComa;
while (locAmp!=NSNotFound) {
tmpText = [tmpText stringByAppendingString:[tmpString substringToIndex:locAmp]];
tmpString = [tmpString stringByReplacingCharactersInRange:NSMakeRange(0, locAmp) withString:@""];
locComa = [tmpString rangeOfString:@";"].location;
Code = [NSString stringWithString:[tmpString substringWithRange:NSMakeRange(0, locComa)]];
Code = [Code stringByReplacingOccurrencesOfString:@"&#" withString:@"\\u"];
NSLog(@"%@", Code);
tmpString = [tmpString stringByReplacingCharactersInRange:NSMakeRange(0, locComa+1) withString:@""];
tmpText = [tmpText stringByAppendingFormat:@"%C", Code];
locAmp = [tmpString rangeOfString:@"&#"].location;
}
tmpText = [tmpText stringByAppendingString:tmpString];
NSLog(@"%@", tmpText);
return tmpText;
}
else
return text;
}
但它不能正常工作 - 它显示随机 Unicode 符号,而不是我想要的。我曾尝试使用 NSUTF8StringEncoding,但也没有用。
任何想法如何解决这个问题?我对转换代码是否正确?
【问题讨论】:
-
一大早要消化这个有点多,但原则上我会说通过 HTML 解析器运行数据,你设置它输出 UTF-8 编码的文本。
标签: html xcode unicode encoding