我有关于特殊字符编码/解码的问题。
问题
我有一个Windows服务,只是公开一个HTTP端点,它返回一个对象集合为json(Content-Type:application / json; charset:utf-8)。公开的数据是彼此相关的对象列表。某些对象的名称可能包含特殊字符,就像äö一样。但我遇到了另一个名为“零宽度空间”的特殊字符,可以通过在某些特定情况下从Microsoft Office OneNote复制数据来实现。
“Lorem Ipsum Dolor Sit Amet”将其复制到记事本中并按向左或向右箭头在此字符串中导航,您会注意到有一些不可见的字符 - 零宽度空间。 (或者你可以将它复制到记事本++并启用特殊字符显示)
但是让我们来看看我的例子中的样子。
结果在chrome中看起来像这样(见图1)
图1:Chrome中的结果
在开发人员控制台中打开并以HTML格式编辑时,结果在chrome中显示如下(参见图2) 图2:Chrome开发者控制台中的结果 - 编辑为HTML
使用C#中的JavaScript Deserializer反序列化结果(见图3)
图3:在C#中反序列化的结果
从公开HTTP端点的服务请求数据如下:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
request.ContentType = "application/json; charset=utf-8";
EntityTagHeaderValue eTag = ETagStore.GetValue(URL);
if (eTag != null && !string.IsNullOrEmpty(eTag.Tag))
request.Headers.Set("If-None-Match", eTag.Tag);
else
request.Headers.Set("If-None-Match", null);
try
{
var response = request.GetResponse();
response.ContentType = "application/json; charset=utf-8";
var stream = response.GetResponseStream();
var reader = new StreamReader(stream, Encoding.UTF8);
var result = reader.ReadToEnd();
数据库中的结果看起来像Lorem?Ipsum?Dolor?坐?Amet,我希望它的结果是:“LoremIpsumDolorSitAmet”。 有没有人有解决方案?