2

经过几个小时的研究,我放弃了。我从 WebService 接收文本数据。在某些情况下,文本是日语,WS 返回其 Unicoded 版本。例如:\U00e3\U0082\U008f 我知道这是一个日文字符。

我正在尝试在 UILabel 中显示此 Unicode 字符或字符串。由于简单的 setText 方法没有显示正确的字符,我使用了这个(复制的)例程:

unichar unicodeValue = (unichar) strtol([[[p innerData] valueForKey:@"title"] UTF8String], NULL, 16);
char buffer[2];
int len = 1;
if (unicodeValue > 127) {
    buffer[0] = (unicodeValue >> 8) & (1 << 8) - 1;
    buffer[1] = unicodeValue & (1 << 8) - 1;
    len = 2;
} else {
    buffer[0] = unicodeValue;
}
    [[cell title] setText:[[NSString alloc] initWithBytes:buffer length:len encoding:NSUTF8StringEncoding] ];

但没有成功:UILabel 是空的。我知道一种方法可以将字符转换为十六进制,然后从十六进制转换为字符串......有没有更简单的方法?

解决了

首先,您必须确保您的服务器发送的是 UTF8 而不是 UNICODE CODE POINTS。我发现的唯一方法是对包含 UNICODE 字符的字符串进行 json_encode。然后,在 iOS 用户中,按照此链接使用 Objective C/Cocoa 取消转义 unicode 字符,即 \u1234

4

0 回答 0