File.Open编码因呈现的HTML实体而中断

时间:2012-10-20 00:51:03

标签: ruby encoding character-encoding

我有一个包含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解决方案除外AªAoputs时输出IBM437 }}

  

设置

     

Windows Server 2008 R2

     

ruby​​ 1.9.3p194(2012-04-20)[i386-mingw32]

当我执行HTML_FILE.external_encoding.name时,编码名称会返回{{1}}。

1 个答案:

答案 0 :(得分:2)

你一定是在开玩笑......

修复方法是在HTML模板页面中设置内容标题。我猜测控制台正在输出有效的UTF-8但不是可识别的格式。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

虽然我现在觉得很愚蠢,但我相信其他人会遇到类似的东西,所以如果那就是你:我感受到你的痛苦;我希望你没有花费最后6个小时进行故障排除。