Encoding::UndefinedConversionError

后端 未结 5 601
天命终不由人
天命终不由人 2020-12-13 09:09

I keep getting an Encoding::UndefinedConversionError - "\\xC2" from ASCII-8BIT to UTF-8 every time I try to convert a hash into a JSON string. I tried

5条回答
  •  粉色の甜心
    2020-12-13 09:59

    What do you expect for "\xC2"? Probably a Â

    With ASCII-8BIT you have binary data, and ruby cant decide, what should be.

    You must first set the encoding with force_encoding.

    You may try the following code:

    Encoding.list.each{|enc|
      begin
        print "%-10s\t" % [enc]
        print "\t\xC2".force_encoding(enc)
        print "\t\xC2".force_encoding(enc).encode('utf-8')
      rescue => err
        print "\t#{err}"
      end
      print "\n"
    }
    

    The result are the possible values in different encodings for your "\xC2".

    The result may depend on your Output format, but I think you can make a good guess, which encoding you have.

    When you defined the encoding you need (probably cp1251) you can

    menu.force_encoding('cp1252').to_json
    

    See also Kashyaps comment.

提交回复
热议问题