它的启动方式有所不同-我的JSON端点未正确接受某些数据。我开始寻找-原来,如果.Net字符串包含'\ uXXXX'符号-则JSON序列化程序,控制台窗口甚至Visual Studio中的调试窗口都无法理解它。但是,如果我将\ uXXXX表示法替换为实际的符号-那么一切都会开始起作用。
示例:\u0092
等于’
-根据https://www.charbase.com/0092-unicode-private-use-two
如果我运行以下代码:
void Main()
{
var s = "test\u0092";
Console.WriteLine(s);
Console.WriteLine(JsonConvert.SerializeObject(s));
s = s.Replace('\u0092', '’');
Console.WriteLine(s);
Console.WriteLine(JsonConvert.SerializeObject(s));
}
输出为
或者如果我从控制台复制/粘贴到这里,我会得到
test
"test"
test’
"test’"
但是为什么输出不相同?我在这里想念什么?
答案 0 :(得分:0)
好的,问题已解决。原来,列是latin1_swedish_ci
归类-它使用扩展的ascii符号(例如’
为146)-.Net转换为unicode符号-\u0092
-但这不是有效的代码。最终解决方案的灵感来自this SO answer:
res = Encoding.GetEncoding(1252).GetString(res.Select(c => (byte) c).ToArray());