【发布时间】:2012-10-20 09:24:31
【问题描述】:
我有一个包含 300 多个 HTML 文件的目录,我需要从中解析数据并将其放入一个新的 HTML 模板中,该模板运行良好,但预渲染的 HTML 实体(如平方根√)除外的文件。在过去的几个小时里,我阅读了大量关于 Ruby 1.9 编码的帖子,并尝试了以下内容:
File.read( "_pending/testdir/filename.html", :encoding=>"UTF-8" )
和
trans = Iconv.new( 'UTF-8', 'IBM437' )
input_text = File.read( "_pending/testdir/filename.html" )
output_text = trans.iconv( input_text )
puts output_text
一切都没有运气。转换后,平方根符号在浏览器和原始 HTML 标记中仍然显示为 √,但 Iconv 解决方案除外,它在 puts 时将 AªAo 输出到控制台。
设置
Windows Server 2008 R2
ruby 1.9.3p194 (2012-04-20) [i386-mingw32]
当我执行HTML_FILE.external_encoding.name 时,编码名称返回IBM437。
【问题讨论】:
-
您确定它们是“IBM437”吗? Win-1252 或 ISO-8859-1 更有可能是候选人。另一种方法是预先通过并将复选标记添加到实体中。
-
我同意,看起来很奇怪,但是当我运行下面的代码时,我得到了
IBM437。test = File.open( "filename.html" ) puts test.external_encoding.name test.close -
感谢 Tin Man,事实证明我只是个白痴,Ruby 根本不是问题……感谢您代表我调查此事。
标签: ruby encoding character-encoding