阿拉伯字符问题

我在iPhone应用程序中显示一些阿拉伯语文本时遇到一些问题。 当我在UILabel上显示它时,它显示为?????? ????? ?????? ?????? ????? ?????? 该字符串来自服务器作为XML,我解析它并显示在UILabel上。 我不知道这是由于iPhone或服务器端的问题。

  • 我想知道如何确定来自服务器的字符串具有正确的编码并且是有效的阿拉伯字符。

  • 是否足以打印每个字符的值并检查它是否位于阿拉伯语Unicode字符之间。 (如字符A的ASCII值为65,Z的字符为90.因此值70必须是ASCII字符)。

  • 在服务器中,字符串使用UTF8编码进行编码。 而服务器程序用c#编写。 将阿拉伯语文本从服务器传输到iPhone的写入编码方法是什么?

  • 我是否需要使用其他字体才能正确显示阿拉伯字符。

  • 在Internet中是否有任何带有阿拉伯语内容的XML文件,我可以从中解析并正确显示阿拉伯语文本?

提前致谢..

编辑:

当我NSLogged XML数据时我得到了相同的???? ???? ??? ???? ???? ??? 字符。

编辑

查看我在控制台中获得的XML样式数据。

  9999 ???? ????? ?????????? ????? ????????? CHINA SECURITY & SURVEILLANCE TECHNOLOGY, INC. ???? ????? ????????? CHINA SECURITY & SUR 9 86 Y CSR 0001 DFM AED  

您应该以UTF-8发送和接收来自服务器的文本!!

来自NSString.h:

 enum { NSASCIIStringEncoding = 1, /* 0..127 only */ ... **NSUTF8StringEncoding = 4,** ... **NSUTF16StringEncoding = NSUnicodeStringEncoding,** /* An alias for NSUnicodeStringEncoding */ .... }; typedef NSUInteger NSStringEncoding; 

在您的iOS应用程序中,代码应如下所示:((NSData *)serverSentData – 从服务器收到的字符串的nsdata表示)

 NSString* lableText = [[NSString alloc] initWithData:serverSentData encoding:NSUTF8StringEncoding ]; 

如果它是UTF-16:

 NSString* lableText = [[NSString alloc] initWithData:serverSentData encoding:NSUTF16StringEncoding ]; 

顺便说一下,你可以使用json。 当我发送cyrylic文本时,它对我很有用。

谢谢你的所有答案。 问题不在于iPhone方面。 在服务器中,XML未正确编码为UTF8字符串。 当它正确编码时,我得到了有效的阿拉伯字符。 我只做了类似的代码

  NSString* lableText = [[NSString alloc] initWithData:serverSentData encoding: NSUTF8StringEncoding ]; 

将NSData转换为NSString并且运行良好!

如果您的服务器在标头中发送编码:

  

然后内置的或任何其他编写良好的XML解析器将以正确的方式处理和解码PCDATA(标签之间的文本)。 如果您的服务器没有发送此信息而您无法在服务器端更改它,那么您必须猜测服务器正在使用哪种编码并将结果手动转换为UTF-8。 例如,如果您的字符串是纯16位Unicode,您可以这样做:

 NSString *responseString = [[[NSString alloc] initWithData:responseData encoding:NSUnicodeStringEncoding] autorelease]; NSData* convertedData = [responseString dataUsingEncoding:NSUTF8StringEncoding]; 

这篇文章可能有所帮助

编码阿拉伯语字母unichar到普通字母