how can I Deserialize emoji in json in C#

前端 未结 1 1897
迷失自我
迷失自我 2020-12-20 09:41

I have a json file that include emoji when I want to deserialize it , it could not deserialize emoji to string. my code is:

var mystring ={\"message\":\"jja         


        
相关标签:
1条回答
  • Your problem is that this portion of your message string does not conform to the JSON standard:

    "\u{1F3FD}"
    

    According to the standard, \u four-hex-digits represents a unicode character literal given by the hex value of its code point. Your string \u{1F3FD} with its curly braces does not conform to this convention, and so Json.NET throws an exception upon trying to parse it. You will see a similar error if you upload your JSON to https://jsonformatter.curiousconcept.com/.

    Thus it would seem, to fix your JSON to make it conform to the standard, you need to format your character like \uXXXX using the appropriate 4 hex digits. However, your character, U+1F3FD, is larger than 0xFFFF and does not exist on the Unicode Basic Multilingual Plane. It cannot be represented as a single 4-digit hex number. c# (and utf-16 in general) represents such Unicode characters as surrogate pairs -- pairs of two two-byte chars. You will need to do the same here. The UTF-16 (hex) representation of your character is

    0xD83C 0xDFFD 
    

    Thus your JSON character needs to be:

    \uD83C\uDFFD
    

    And for your entire string:

    {"message":"jjasdajdasjdj laslla aasdasd ssdfdsf!!!                                                                     
    0 讨论(0)
提交回复
热议问题