汉字编码问题ios

时间:2013-01-31 05:49:13

标签: ios json

我有一个应用程序,我支持四种语言。当我在那时用中文用户名登录时,它显示我这样的响应..

  

[{ “0”: “41”, “INTID”: “41”, “1”: “\ u8a00 \ u3046” 的 “varfirstname”: “\ u8a00 \ u3046”下, “2”: “\ u8a00 \ u3046”, “varlastname”: “\ u8a00 \ u3046”, “3”: “\ u5730”, “varusername”: “\ u5730”, “4”:“abc@gmail.com ”, “varemailid”: “abc@gmail.com”, “5”: “QWERT”, “varpassword”: “QWERT”, “6”: “12345”, “varmobileno”: “12345”, “7”: “启用”, “mobileMessage”: “使能”, “8”: “”, “varphoneno”: “”, “9”: “启用”, “enumstatus”: “使能”, “10”:“2013-01 -30" , “date_insert”: “2013年1月30日”, “11”: “2013年1月30日”, “date_edit”: “2013年1月30日”, “12”: “1.38.28.36”, “varipaddress”: “1.38.28.36”}]

我想向UITextfield文本显示“varfirstname”。但是当我在NSLog中打印它时,我没有得到任何文本。

  

NSLog(@"Text is === %@",textfname,text);

如何解码此文字?并在UITextfield或UILabel上显示。

2 个答案:

答案 0 :(得分:3)

我刚刚搜索过它,发现了here中有用的答案之一。

中文和日文字符不能与ASCII字符串编码一起使用。如果你试图通过Apple的方法来逃避字符串,你肯定应该避免代码重复,将结果存储为Unicode字符串。使用以下编码之一:

NSUTF8StringEncoding
NSUTF16StringEncoding
NSShiftJISStringEncoding (not Unicode, Japanese-specific)

<强>更新

例如,您可以编码解码您的中文字符串,如下所示:

NSString * test = @"汉字马拉松是";
NSString* encodedString =[test stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSLog(@"====%@",encodedString);

输出为

  

%E6%B1%89%E5%AD%97%E9%A9%AC%E6%8B%89%E6%9D%BE%E6%98%AF

然后将其解码为:

NSString* originalString =[encodedString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"====%@",originalString);

输出为

  

汉字马拉松是

答案 1 :(得分:1)

NSString *abc = @"\u8a00\u3046";

NSLog(@" %@ " , [NSString stringWithUTF8String:[abc UTF8String]]);

如果你使用json:

NSString *html = @"\u8a00\u3046";

NSData *jsonData = [html dataUsingEncoding:NSUTF8StringEncoding];

NSLog(@" %@ " , [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]);

他们都输出“言う”我认为是日本人