【发布时间】:2014-02-18 05:08:00
【问题描述】:
我将用一些代码留置权来描述我的问题
irb(main):004:0> require 'nokogiri'
=> true
irb(main):005:0> builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8'){ |xml| xml.root { xml.Test "Täht" } }
=> #<Nokogiri::XML::Builder:0x961a374 @ns=nil, @arity=1, @parent=# <Nokogiri::XML::Document:0x4b0cf30 name="document" children=[# <Nokogiri::XML::Element:0x4b0ce40 name="root" children=[#<Nokogiri::XML::Element:0x4b0cd50 name="Test" children=[#<Nokogiri::XML::Text:0x4b0c7a6 "T\303\244ht">]>]>]>, @context=nil, @doc=#<Nokogiri::XML::Document:0x4b0cf30 name="document" children=[#<Nokogiri::XML::Element:0x4b0ce40 name="root" children=[#<Nokogiri::XML::Element:0x4b0cd50 name="Test" children=[#<Nokogiri::XML::Text:0x4b0c7a6 "T\303\244ht">]>]>]>>
irb(main):009:0> builder.to_xml(:encoding => 'utf-8')
=> "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <Test>Täht</Test>\n</root>\n"
存在奇怪的环境特定行为,即使我定义了 utf-8 编码,它仍然使用 html 实体。
- CentOS 5.8 版(最终版)
- ruby 1.8.7 (2011-02-18 patchlevel 334) [i686-linux], MBARI 0x8770, Ruby Enterprise Edition 2011.03
- Rails 3.2.11
mac 上的相同代码可以正常工作。
【问题讨论】:
-
我请你去
nokogiri-talk。非常活跃,项目所有者都在那里..available -
我找到了问题的根源: 1. 将 CentOS libxml2 更新到 2.7 版本 2. 将 ruby 中的文件写入模式设置为 "w:UTF-8"
-
然后将其发布为答案。
标签: ruby-on-rails ruby utf-8 centos nokogiri