NSString * string = @"االْحَمْدُ لِلَّهِ رَبِّ الْعَالَمِينَ";
const char *c = [string cStringUsingEncoding:NSUTF8StringEncoding];
NSString *newString = [[NSString alloc]initWithCString:c encoding:NSISOLatin1StringEncoding];
NSLog(@"%@",newString);
// NSString * staticEncodedString = @"اÙÙØÙÙ Ùد٠ÙÙÙÙÙÙ٠رÙبÙ٠اÙÙعÙاÙÙÙ ÙÙÙÙ";
const char *cvvv = [newString cStringUsingEncoding:NSISOLatin1StringEncoding];
NSString *newStringV = [[NSString alloc]initWithCString:cvvv encoding:NSUTF8StringEncoding];
NSLog(@"%@",newStringV);
为什么直接注释编码的字符串不能转换为阿拉伯语? 当我对阿拉伯语进行硬编码时,它会进行编码然后正确解码,但为什么静态编码的字符串在阿拉伯语中不可读?
感谢您的回复杰克。是的,我在解码“staticEncodedString”时丢失数据。但我想要的是将以下字符串解码回阿拉伯语。
NSString * staticEncodedString = @"اÙÙØÙÙ Ùد٠ÙÙÙÙÙÙ٠رÙبÙ٠اÙÙعÙاÙÙÙ ÙÙÙÙ";
答案 0 :(得分:4)
编码是ANSI的,我认为可以从任何工具将其更改为UTF-8。 例如,使用Notepad ++进行申请,然后您可以在sqlite或ios中使用编码。
答案 1 :(得分:1)
Latin1不能代表阿拉伯字符,因此您无法将该字符串编码为Latin1。阿拉伯语属于Latin4字符集。如果字符串无法无损地编码为指定的编码,则cStringUsingEncoding方法将返回null。
为什么要将阿拉伯字符串编码为LatinX? UTF-8很可能是最好的代表,因为它只使用标准字符和直接的方法,没有头痛。它可能需要比Latin4更多的字节,但在大多数情况下它将是值得的。
转换为Latin1会让你丢失文字。