Gau*_*te 21 iphone json objective-c utf-8
我试图从我的iPhone上的json webservice解析一个feed但是utf8转换不能正常工作或我做错了什么这里是feed的一部分
est un r\u00c3\u00aave en noir
这是我编写的用于转换上述代码的代码:
NSString* str1 = @"est un r \u00c3\u00aa ve en noir";
NSString* str = [NSString stringWithUTF8String:[str1 cStringUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"Converted UTF %@",str);
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出:
Converted UTF est un r ê ve en noir
预期的产出应该是
Converted UTF est un rêve en noir
当我检查UTF表并在线使用utf转换器时,使用相同的代码并使用字符串正确获取输出@"est un r\u00EAve en noir"但我认为如果我没有弄错,则使用UTF16表示.现在我真正解决了如何解析这个feed.
小智 39
经过多次悲痛,我已经想到了这一点.用这个.
NSString *correctString = [NSString stringWithCString:[utf8String cStringUsingEncoding:NSISOLatin1StringEncoding] encoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)
Tom*_*mmy 10
我认为测试案例已经破裂; 下列:
NSString* str1 = @"est un r \u00c3\u00aa ve en noir";
NSLog(@"%@", str1);
Run Code Online (Sandbox Code Playgroud)
还输出'est unrêveen noir'.但是,这个:
NSString* str1 = @"est un rêve en noir";
NSLog(@"%@", str1);
Run Code Online (Sandbox Code Playgroud)
输出'estunrêveennoir',同样如下:
NSString* str1 = @"est un rêve en noir";
NSString* str = [NSString stringWithUTF8String:[str1 cStringUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"%@", str);
Run Code Online (Sandbox Code Playgroud)
并略微缩短版本:
NSString* str1 = @"est un rêve en noir";
NSString* str = [NSString stringWithUTF8String:[str1 UTF8Encoding]];
NSLog(@"%@", str);
Run Code Online (Sandbox Code Playgroud)
确实:
char *str1 = "est un r\xc3\xaave en noir";
NSString* str = [NSString stringWithUTF8String:str1];
NSLog(@"%@", str);
Run Code Online (Sandbox Code Playgroud)
我认为这是一个JSON的问题,而不是UTF8.\ u后跟四个十六进制数字是JSON编码通用UTF16字符的方式,它不是UTF的固有部分.所以NSString不知道如何处理它.您的JSON解析器需要适应以正确解析转义序列.
| 归档时间: |
|
| 查看次数: |
46500 次 |
| 最近记录: |