HttpResponse Special Char" Zero Width Space"

时间:2014-06-26 12:52:27

标签: c# http encoding

我有关于特殊字符编码/解码的问题。

问题

我有一个Windows服务,只是公开一个HTTP端点,它返回一个对象集合为json(Content-Type:application / json; charset:utf-8)。公开的数据是彼此相关的对象列表。某些对象的名称可能包含特殊字符,就像äö一样。但我遇到了另一个名为“零宽度空间”的特殊字符,可以通过在某些特定情况下从Microsoft Office OneNote复制数据来实现。

“Lorem Ipsum Dolor Sit Amet”将其复制到记事本中并按向左或向右箭头在此字符串中导航,您会注意到有一些不可见的字符 - 零宽度空间。 (或者你可以将它复制到记事本++并启用特殊字符显示)

但是让我们来看看我的例子中的样子。

结果在chrome中看起来像这样(见图1) Picture 1

图1:Chrome中的结果


在开发人员控制台中打开并以HTML格式编辑时,结果在chrome中显示如下(参见图2) Picture 2 图2:Chrome开发者控制台中的结果 - 编辑为HTML


使用C#中的JavaScript Deserializer反序列化结果(见图3) enter image description here

图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”。 有没有人有解决方案?

0 个答案:

没有答案