C#RESTful WebApi在json中用阿拉伯语发布数据但接收?

时间:2017-02-07 06:36:45

标签: c# asp.net-web-api arabic restful-url

在C#WebApi中,当尝试以json格式接收阿拉伯语数据(通过 Soap UI 发送)时,我收到“???”而不是实际的阿拉伯文字。

URL:

http://localhost:4321/receive/message

Json格式(请求):

{
   "message_no";"123",
   "user_id":"a123",
   "text":"أهلا بك",
}

型号:

public class MessageBody
{
        [JsonProperty(PropertyName = "message_no")]
        public string MessageNo { get; set; }
        [JsonProperty(PropertyName = "user_id")]
        public int UserId { get; set; }
        [JsonProperty(PropertyName = "text")]
        public int Text { get; set; }
}

收到的内容:

MessageNo:123

UserId:a123

文字:??????

3 个答案:

答案 0 :(得分:0)

我认为你在服务器端拥有UTF-8的字节,任何客户端代码也可以使用各种字符串编码格式来显示测试。

答案 1 :(得分:0)

将您的字符串传递给此方法。这将返回所需的文本。

public string DecodeEncodedNonAsciiCharacters(string value)
            {
                return Regex.Replace(
                    value,
                    @"\\u(?<Value>[a-zA-Z0-9]{4})",
                    m =>
                    {
                        return ((char)int.Parse(m.Groups["Value"].Value, NumberStyles.HexNumber)).ToString();
                    });
            }

答案 2 :(得分:0)

对于客户端:

仅限于使用HTML网页发布数据。

除了保存文件的UTF-8格式外。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta charset="utf-8" />

对于服务器端:

将以下内容添加到web.config并将其设置为<system.web>元素。

<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8"/>