我有一個非常簡單的問題,我似乎無法得到我的頭。C#UTF8輸出保持編碼字符不變
我有一個正確編碼的UTF8字符串,我用Json.NET解析成一個JObject,擺弄一些值並寫入命令行,保持編碼字符不變。
除了保持編碼字符完整的部分之外,一切都很好。
代碼:
var json = "{roster: [[\"Tulg\u00f4r\", 990, 1055]]}";
var j = JObject.Parse(json);
for (int i = 0; i < j["roster"].Count(); i++)
{
j["roster"][i][1] = ((int)j["roster"][i][1]) * 3;
j["roster"][i][2] = ((int)j["roster"][i][2]) * 3;
}
Console.WriteLine(JsonConvert.SerializeObject(j, Formatting.None));
實際輸出:
{"roster":[["Tulgôr",2970,3165]]}
所需的輸出:
{"roster":[["Tulg\u00f4r",2970,3165]]}
好像我在谷歌的措辭是不合適的,因爲沒有什麼用處了上來。我確信這是一件非常簡單的事情,之後我會覺得很愚蠢。 :)
正確,但我不希望在輸出中解釋字符。我想在命令行上看到unicode表示,所以我可以將結果字符串複製粘貼到需要\ u的第三方應用程序中,因爲它似乎不能正確解析輸入。 – 2010-05-30 01:28:36
好的,它看起來像你的第三方應用程序期待ASCII或UTF-8。當你複製和粘貼你將複製和粘貼UTF-16。你想要的是ASCII轉義編碼的Unicode。 @布拉德利的答案應該可以解決問題。 – 2010-05-30 10:24:34