我目前正在尝试编写一个迭代输入文件并检查网站数据的脚本.如果找到新数据,它会打印到它传递的终端,如果没有,它会告诉我它失败了.对于删除的数据,反之亦然.它一直工作正常,直到我给出的输入文件包含"™"字符.然后当ruby到达那一行时,它会吐出一个错误:
PDAPWeb.rb:73:在`include?'中:不兼容的字符编码:UTF-8和IBM437(Encoding :: CompatibilityError)
违规行是一个简单的检查,以查看页面上是否存在文本.
if browser.text.include? (program_name)
Run Code Online (Sandbox Code Playgroud)
其中program_name变量是来自输入文件的已解析信息.在这种情况下,program_name包含前面提到的'TM'字符.
经过一些研究后,我发现在我的脚本开头添加#encoding:utf-8行可能有所帮助,但到目前为止还没有证明有用.
我将它添加到我的program_name变量中以查看它是否有用(并且它允许我的脚本无错误地运行),但现在它没有正确地找到它应该的TM字符.
program_name = record[2].gsub("\n", '').force_encoding("utf-8").encode("IBM437", replace: nil)
Run Code Online (Sandbox Code Playgroud)
这似乎将TM字符转换为:Γäó
我想也许我有IBM437和utf-8部件相反,所以我尝试了相反的
program_name = record[2].gsub("\n", '').force_encoding("IBM437").encode("utf-8", replace: nil)
Run Code Online (Sandbox Code Playgroud)
并且我现在在尝试运行脚本时收到此错误
PDAPWeb.rb:48:在`encode'中:从UTF-8到IBM437的U + 2122(Encoding :: UndefinedConve rsionError)
我使用的是ruby 1.9.3p392(2013-02-22),我不确定是否应该升级,因为这是我公司安装的标准版本.
我的编码是否不正确并导致它转换TM字符有错误?