none
C# String赋值给string后,内容变了。 RRS feed

  • 问题

  • 一个很奇怪的现象,使用Encoding.UTF8方式从文件中读取json数据,然后转换成json对象,然后对每个key对应的value进行编码转换,如下:

    foreach (KeyValuePair<string, JsonValue> kv in jsonObject)
    {
        string key = kv.Key;
        string valueStr = kv.Value;
    }

    string valueStr = kv.Value;这一句很奇怪kv.Value显示是String型,调试时内容是正常的,赋值给valueStr后,发现valueStr有无法识别的文字,如下:

    尝试编码转换测试:

    波兰语编码:

    byte[] utf8BS = Encoding.UTF8.GetBytes(kv.Value);
    byte[] currEncodingBS = Encoding.Convert(Encoding.UTF8, mEncoding, utf8BS);
    
    string currEncodingStr = mEncoding.GetString(currEncodingBS);
    测试结果:

    currEncodingStr的值和valueStr一样的!

    问题:

    1、kv.Value的内容是波兰语文字,赋值前显示正常(没有不可识别的),赋值之后就存在不识别?

    2、string不是String的别名吗?








    • 已编辑 oneonce 2018年11月3日 5:51
    2018年9月30日 5:49

全部回复

  • 你好,

    >>1、kv.Value的内容是波兰语文字,赋值前显示正常(没有不可识别的),赋值之后就存在不识别?

    可以提供一个完整的,简单的,可以重现问题的例子吗? 你可以上传到OneDrive,然后把共享链接发到这里。

    >>2、string不是String的别名吗?

    string 就是String的别名, 他们之间没有什么不一样的地方。

    Best regards,

    Zhanglong


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年10月1日 5:57
    版主
  • Hi Zhanglong!

        非常感谢您的回复,我暂时没法用OneDrive,我上传到了百度网盘,能否在那边下载^_^

    链接: https://pan.baidu.com/s/1wShtWfNeXqfk0hQEgHr6rA

    密码: k9ak

    2018年10月9日 0:40
  • SOS!
    2019年1月9日 10:15