【问题标题】:Character encoding in rubyruby 中的字符编码
【发布时间】:2012-09-17 22:32:56
【问题描述】:

我正在使用 Nokogiri 解析来自一个荷兰站点的一些数据,并将数据保存到 csv 中。但数据显示不正确。例如,在表单 thre 上是 Einddatum1 空白空间,但是当我在保存之前将其打印到控制台时显示为“\u00A0”。其他字符串也无法正确显示,例如“Univ\u00E9 Zorg Geregeld Polis”。

{:Bsn=>"112511111",
 :Verzekerde=>"VerzekerdeAHM Andes-Faasse",
 :Pakketnaam1=>"Univ\u00E9 Zorg Geregeld Polis",
 :Verzekerdennummer1=>"1234987654",
 :Begindatum1=>"01 jan 2012",
 :Einddatum1=>"\u00A0",
 }

也许这个 html 页面的标题可能是相关的:

<!doctype html>
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!--[if lt IE 7 ]> <html class="no-js ie6" lang="en"> <![endif]-->
<!--[if IE 7 ]>    <html class="no-js ie7" lang="en"> <![endif]-->
<!--[if IE 8 ]>    <html class="no-js ie8" lang="en"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head id="Head1"><meta charset="utf-8" />

    <!-- Always force latest IE rendering engine (even in intranet)
         Remove this if you use the .htaccess -->
    <meta http-equiv="X-UA-Compatible" content="IE=edge" /><title>
    Verzekeringsrecht controleren
</title><meta http-equiv="cache-control" content="no-cache" /><meta http-equiv="content-language" content="nl-NL" />

它看起来像是 utf-8,但这些字符有问题。如何正确编码?

【问题讨论】:

  • 您必须将外部编码设置为 UTF-8。我不知道如何用 Nokogiri 做到这一点,但我相信你可以。
  • 我在创建 Nokogiri 时设置了编码,但没有任何变化。也许不是 UTF-8?
  • 对我来说这看起来就像它应该看起来的样子。 \u00A0 顺便说一句是  在标记中。您可以使用 gsub 将它们从那里取出:str.gsub(/\u00A0/,'')
  • 当然可以,但是像\u00E9 这样的其他字符很少。我认为它可以通过某种方法进行转换。
  • \u00E9 是合法的 unicode 字符。你不想改变它。

标签: ruby character-encoding nokogiri


【解决方案1】:

然后该行将显示为:Pakketnaam1=&gt;"Univé Zorg Geregeld Polis",

这是应该存在的,而您的控制台编码只是没有定义,所以 Ruby 不知道如何在打印 Unicode 字符时显示它们,还是应该有更多的文本?

【讨论】:

  • 这正是应该有的。控制台没有问题,但是保存到 csv 后没有以正确的方式保存。
  • @ИванБишевац CSV 可能被正确写入。确保使用 UTF-8 编码打开它。
猜你喜欢
  • 1970-01-01
  • 2015-02-03
  • 2012-04-05
  • 2015-08-25
  • 2015-02-08
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
相关资源
最近更新 更多