BOM in server response screws up json parsing

后端 未结 3 1720
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-31 18:55

I\'m trying to write a Python script that posts some JSON to a web server and gets some JSON back. I patched together a few different examples on StackOverflow, and I think

3条回答
  •  一生所求
    2020-12-31 19:31

    Since I lack enough reputation for a comment, I'll write an answer instead.

    I usually encounter that problem when I need to leave the underlying Stream of a StreamWriter open. However, the overload that has the option to leave the underlying Stream open needs an encoding (which will be UTF8 in most cases), here's how to do it without emitting the BOM.

    /* Since Encoding.UTF8 (the one you'd normally use in those cases) **emits**
     * the BOM, use whats below instead!
     */
    
    // UTF8Encoding has an overload which enables / disables BOMs in the output
    UTF8Encoding encoding = new UTF8Encoding(false);
    
    using (MemoryStream ms = new MemoryStream())
    using (StreamWriter sw = new StreamWriter(ms, encoding, 4096, true))
    using (JsonTextWriter jtw = new JsonTextWriter(sw))
    {
        serializer.Serialize(jtw, myObject);
    }
    

提交回复
热议问题