C# 如何将类似utf8的字符串转换为真正的utf8?

C# 如何将类似utf8的字符串转换为真正的utf8?,c#,json,encoding,C#,Json,Encoding,我正在开发一个应该与MMO游戏服务器通信的客户端。 客户端正在使用unity3d。 我使用JSON格式从服务器获取数据,并尝试以UTF8编码获取数据: string responseString = new System.IO.StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8).ReadToEnd() JSONObject JOBJ = new JSONObject(responseString); 响应字

我正在开发一个应该与MMO游戏服务器通信的客户端。 客户端正在使用unity3d。 我使用JSON格式从服务器获取数据,并尝试以UTF8编码获取数据:

string responseString = new System.IO.StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8).ReadToEnd()
JSONObject JOBJ = new JSONObject(responseString);
响应字符串中的内容如下所示:

"\u0645\u0639\u062f\u0646 \u062a\u06cc\u062a\u0627\u0646\u06cc\u0648\u0645"
然后我尝试从JSON中获取所需的utf8字符串数据:

string xy = JOBJ["name"].ToString();
byte[] utf = System.Text.Encoding.UTF8.GetBytes(xy);
string s2= System.Text.Encoding.UTF8.GetString(utf);
问题是当我记录字符串时:

Debug.Log("Jproperty :" + s2);
我所得到的只是\u这样的画面:

"\u0645\u0639\u062f\u0646 \u062a\u06cc\u062a\u0627\u0646\u06cc\u0648\u0645"
如果我把相同的结果放在xy的第一位,我会得到很好的结果。 我还应该提到,虽然我认为s2.length应该是11,但它是66


任何人都可以告诉我我的代码出了什么问题?

包含unicode转义序列的字符串是完全有效的。您的数据可能在发送到服务器之前被转义

尝试:


包含unicode转义序列的字符串是完全有效的。您的数据可能在发送到服务器之前被转义

尝试:


我一点也不清楚你所说的“如果我把相同的结果放在xy中,我会得到很好的结果”是什么意思。我的意思是如果我定义字符串xy=“\u0645\u…”。。。。我可以在debug.log.Right中看到正确的结果。这意味着某些东西编码了两次,或者无法解码。
responseString
看起来像什么?请将其编辑到问题中。我一点也不清楚您所说的“如果我首先将相同的结果放在xy中,我会得到很好的结果”是什么意思。我的意思是如果我定义字符串xy=“\u0645\u…”。。。。我可以在debug.log.Right中看到正确的结果。这意味着某些东西编码了两次,或者无法解码。
responseString
看起来像什么?请把它编辑成问题。
var nameEscaped = JOBJ["name"].ToString();
// nameEscaped =
// \u0645\u0639\u062f\u0646 \u062a\u06cc\u062a\u0627\u0646\u06cc\u0648\u0645

var name = Regex.Unescape(nameEscaped);
// name =
// معدن تیتانیوم