我使用Ruby和Nokogiri从客户端的遗留系统中删除数据。
我收到的文字包含商标符号。但是当我在控制台上显示它或将其保存到数据库时,TM会转换为不同的字符。
Diet™
成为Dietâ¢
我非常确定它只是一个编码问题而且我非常确定Ruby有一种简单的方法来处理它,但经过几分钟的谷歌搜索和尝试一些明显的选项,我没有更近的。
提前致谢!
答案 0 :(得分:1)
您的编码不匹配,但您还没有告诉我们足够的帮助。
要检查的事项:
通常,您将获得UTF-8,ISO-8859-1或Win-1252等文档,因此请尝试使用这些值为Nokogiri提供一些提示。 Nokogiri::HTML.parse
的文档说:
parse(thing, url = nil, encoding = nil, options = XML::ParseOptions::DEFAULT_HTML, &block)
其中:
编码是处理文档时应该使用的编码。
找出服务器发送回的内容的一种方法是:
require 'open-uri'
open('http://www.example.net') { |io| io.charset }
# => "iso-8859-1"
警告:服务器发回的内容不一定是内容的真实内容,因此它只是一个初步提示。返回的文件可以是任何内容,此时您可以自己弄清楚它是什么。
通常我们使用Nokogiri::HTML('some html to parse')
,但您可以使用:
Nokogiri::HTML('some html to parse', nil, 'UTF-8')
查看Ruby的编码以找出可用的代码集是什么:
Encoding.constants