它以不同的方式启动——我的JSON端点没有正确地接受某些数据。我开始寻找-结果发现,如果.NET字符串包含'\uxxxx'符号-那么JSON序列化程序、控制台窗口甚至Visual Studio中的调试窗口都无法理解它。但是,如果我用实际符号替换这个\uxxx符号-那么一切都开始工作。
示例: \u0092 equals to -according to https://www.charbase.com/0092 unicode private use two
\u0092 equals to -according to https://www.charbase.com/0092 unicode private use two
equals to -according to https://www.charbase.com/0092 unicode private use two
-according to https://www.charbase.com/0092 unicode private use two
如果我运行此代码: void main()) { var s=“测试\u0092”; console.writeline; console.writeline(jsonconvert.serializeobject)); s=s.replace('\u0092',''); console.writeline; console.writeline(jsonconvert.serializeobject)); } < /代码> 输出将是 或者如果我从控制台复制/粘贴到这里,我会 < PRE> <代码>测试 “测试” 测试 “测试” < /代码> 但为什么输出不相同呢?我这里缺什么? 例子:\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â" 但为什么输出不相同呢?我这里缺什么?
如果我运行此代码:
void main()) { var s=“测试\u0092”; console.writeline; console.writeline(jsonconvert.serializeobject)); s=s.replace('\u0092',''); console.writeline; console.writeline(jsonconvert.serializeobject)); } < /代码> 输出将是 或者如果我从控制台复制/粘贴到这里,我会 < PRE> <代码>测试 “测试” 测试 “测试” < /代码> 但为什么输出不相同呢?我这里缺什么? 例子:\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â" 但为什么输出不相同呢?我这里缺什么?
输出将是
或者如果我从控制台复制/粘贴到这里,我会
但为什么输出不相同呢?我这里缺什么?
例子:\u0092等于â-根据https://www.charbase.com/0092-unicode-private-use-two
\u0092
â
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â"
好的,问题解决了。结果,列在 latin1_swedish_ci 排序规则-它使用扩展的ASCII符号(例如146用于 â )-哪个.NET转换成Unicode符号- \u0092 -但这不是有效的代码。最终解决方案的灵感来自 this SO answer :
latin1_swedish_ci
res = Encoding.GetEncoding(1252).GetString(res.Select(c => (byte) c).ToArray());