代码之家  ›  专栏  ›  技术社区  ›  noloman

用法拉第分析UTF-8

  •  0
  • noloman  · 技术社区  · 6 年前

    我正在用Ruby中的Faraday发出一个API请求,并用 JSON.parse Longitud de la estaci\u00F3n meteorol\u00F3gica (grados) 但应该是 Longitud de la estación meteorológica (grados)

    有没有办法正确分析这个问题? 我有 connection = Faraday.new(my_site) 如果我这样做了 connection.get.body.encoding ,然后我得到 #<Encoding:ASCII-8BIT> connection.get.body.force_encoding('ASCII-8BIT).force_encoding('UTF-8) connection.get.body.force_encoding('ASCII-8BIT).encode('UTF-8) 我明白了 'encode': "\xF3" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError) .

    提前多谢!

    1 回复  |  直到 6 年前
        1
  •  0
  •   Masa Sakano    6 年前

    试试这个:

    connection.get.body.force_encoding('ISO-8859-1').encode('UTF-8')
    

    我不知道法拉第,但从 Encoding::UndefinedConversionError 错误,也许就是这样。我想 connection.get.body 返回普通字符串实例或其等效实例。

    背景

    official document (Ver.2.5.1) 国家,你不应该试图改变 ASCII-8BIT 任何其他编码:

    Encoding::ASCII_8BIT是一种特殊的编码,通常用于字节字符串,而不是字符串。

    o 具有 ' 是ISO-8859-1中的\xF3。下面是一段代码片段来演示它:

    "\xf3".force_encoding('ISO-8859-1').encode('UTF-8')
      # => "ó"
    "\xf3".force_encoding('ASCII-8BIT').encode('UTF-8')
      # => Encoding::UndefinedConversionError 
    

    This past answer

    推荐文章