C# 阿拉伯文问题

C# 阿拉伯文问题,c#,iphone,.net,unicode,C#,Iphone,.net,Unicode,我在iPhone应用程序中显示一些阿拉伯语文本时遇到一些问题。当我在ui标签上显示它时,它会显示为字符串作为XML来自服务器,我解析它并显示在UILabel上。我不知道这是由于iPhone或服务器端的问题造成的 我想知道如何确定来自服务器的字符串具有正确的编码,并且是有效的阿拉伯字符 打印每个字符的值并检查它是否位于阿拉伯文Unicode字符之间就足够了。(就像字符A的ASCII值是65,而字符Z的ASCII值是90。因此,值70必须是ASCII字符) 在服务器中,字符串用UTF8编码。以及用

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

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

  • 打印每个字符的值并检查它是否位于阿拉伯文Unicode字符之间就足够了。(就像字符A的ASCII值是65,而字符Z的ASCII值是90。因此,值70必须是ASCII字符)

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

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

  • 互联网上是否有任何包含阿拉伯语内容的XML文件,从中我可以正确解析和显示阿拉伯语文本

提前谢谢

编辑:

当我记录XML数据时,我得到了相同的
字符

编辑

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

<CB_SEC_COMP>
<SC_COMP_ID>9999</SC_COMP_ID>
<SCA_LONG_NAME>???? ????? ?????????? ????? ?????????</SCA_LONG_NAME>
<SCE_LONG_NAME>CHINA SECURITY &amp; SURVEILLANCE TECHNOLOGY, INC.</SCE_LONG_NAME>
<SCA_SHORT_NAME>???? ????? ?????????</SCA_SHORT_NAME>
<SCE_SHORT_NAME>CHINA SECURITY &amp; SUR</SCE_SHORT_NAME>
<SC_MRK_CODE>9</SC_MRK_CODE>
<SC_SEC_CODE>86</SC_SEC_CODE>
<SC_STATUS>Y</SC_STATUS>
<TICKER_ID>CSR</TICKER_ID>
<SC_MRK_TYPE_CODE>0001</SC_MRK_TYPE_CODE>
<SC_EXCHANGE>DFM</SC_EXCHANGE>
<CUR_CODE>AED</CUR_CODE>
</CB_SEC_COMP>

9999
???? ????? ?????????? ????? ?????????
中国安防;监视技术公司。
???? ????? ?????????
中国安防;苏尔
9
86
Y
企业社会责任
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表示形式)

如果是UTF-16:

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

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

您应该在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表示形式)

如果是UTF-16:

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

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

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

<?xml version="1.0" encoding="UTF-8" ?>

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

<?xml version="1.0" encoding="UTF-8" ?>
这篇文章可能有助于:

这篇文章可能有助于:


谢谢你的回答。问题不在iPhone方面。在服务器中,XML未正确编码为UTF8字符串。当它正确编码后,我得到了有效的阿拉伯字符。我只喜欢写代码

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

用于将NSData转换为NSString,效果很好

谢谢你的回答。问题不在iPhone方面。在服务器中,XML未正确编码为UTF8字符串。当它正确编码后,我得到了有效的阿拉伯字符。我只喜欢写代码

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

用于将NSData转换为NSString,效果很好

您是否尝试过设置断点并调试代码,以便在解析之前、解析之后以及将其添加到UILabel之前查看XML字符串中的值?您做了哪些研究来确定XML中可以传递哪些字符以及采用何种编码方式?您是否可以显示您的iOS代码来处理来自服务器的响应?这听起来可能是客户端的编码问题(因为您验证了您的服务器是用UTF8编码的)。我不确定xml是用UTF8编码的,它没有类似的头。它只有一些标记,每个标记都有值。当我将XML打印到控制台时,我将发送部分XML。0002 ???? ???? ?????? 房地产指数90000000??????公司名称SEC_DESC_A是阿拉伯语,SEC_DESC_E是英语值。SCA_缩写_名称阿拉伯名称。你能看到一些吗???如果您可以展示如何获取此xml(可能是url),这将非常有用。您是否尝试过在解析xml字符串之前、解析xml字符串之后以及将其添加到UILabel之前设置断点并调试代码,以查看xml字符串中的值?您做了哪些研究来确定XML中可以传递哪些字符以及采用何种编码方式?您是否可以显示您的iOS代码来处理来自服务器的响应?这听起来可能是客户端的编码问题(因为您验证了您的服务器是用UTF8编码的)。我不确定xml是用UTF8编码的,它没有类似的头。它只有一些标记,每个标记都有值。当我将XML打印到控制台时,我将发送部分XML。0002 ???? ???? ?????? 房地产指数90000000??????公司名称SEC_DESC_A是阿拉伯语,SEC_DESC_E是英语值。SCA_缩写_名称阿拉伯名称。你能看到一些吗???如果你能展示一下你是如何得到这个xml(可能是url)的,这将是很有帮助的。我没有得到像标题一样的。这是因为,在服务器端使用DataSet.GetXML方法,默认情况下,该方法不会放置。不管怎样,让我检查一下您将字符串转换为数据的方式。谢谢你的关心,我可不想这样。这是因为,在服务器端使用DataSet.GetXML方法,默认情况下,该方法不会放置。不管怎样,让我检查一下您将字符串转换为数据的方式。谢谢你的关注。