【发布时间】:2023-03-18 19:50:01
【问题描述】:
使用 Ruby 的 open-uri 中的 open(),我想从不受我控制的任意服务器中获取文件。服务器可以为文件指定一个 Content-Type,例如text/calendar; charset=utf-8 或 text/calendar; charset=ISO-8859-1,在这种情况下,我很高兴 open() 会相信该字符集是服务器声称的任何内容。但是,如果服务器没有指定字符集,那么open() 似乎假定字符集是“ASCII-8BIT”。我想让open() 改为假设字符集是“UTF-8”(当没有指定字符集时),因为text/calendar,即“iCal 文件”,通常应该编码为“UTF -8。”
我强调只假设字符集当没有指定字符集时,因为我仍然想尊重服务器的决定,可以选择以他们喜欢的任何字符集提供文件。
我尝试了open('http://my-test-uri.test', 'r:UTF-8'),但它无条件地覆盖了字符集,即使服务器指定了不同的字符集,例如“ISO-8859-1”。
【问题讨论】:
标签: ruby utf-8 character-encoding open-uri