tvdb中的汉尼拔剧集中有奇怪的人物.
例如:
Œuf
Run Code Online (Sandbox Code Playgroud)
所以红宝石吐出来:
./manifesto.rb:19:in `encode': "\xC3" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)
from ./manifesto.rb:19:in `to_json'
from ./manifesto.rb:19:in `<main>'
Run Code Online (Sandbox Code Playgroud)
第19行是:
puts @tree.to_json
Run Code Online (Sandbox Code Playgroud)
有没有办法处理这些非utf字符?我宁愿不更换它们,而是转换它们?还是忽略它们?我不知道,任何帮助表示赞赏.
奇怪的是,脚本通过cron正常工作.手动运行它会产生错误.
小智 20
File.open(yml_file,'w')应该更改为File.open(yml_file,'w b ')
Мал*_*евъ 17
看来你应该为对象使用另一种编码.你应该适当的代码页设置为变量@tree,例如,使用ISO-8859-1,而不是ASCII的8位使用@tree.force_encoding('ISO-8859-1').因为ASCII-8BIT仅用于二进制文件.
要查找ruby的当前外部编码,请发出:
Encoding.default_external
Run Code Online (Sandbox Code Playgroud)
如果sudo解决了问题,问题出在默认代码页(编码)中,因此要解决它,您必须通过以下任一方式设置正确的默认代码页(编码):
在ruby 中将编码更改为utf-8或其他正确的编码,请执行以下操作:
Encoding.default_external = Encoding::UTF_8
Run Code Online (Sandbox Code Playgroud)在bash中,grep当前有效的设置:
$ sudo env|grep UTF-8
LC_ALL=ru_RU.UTF-8
LANG=ru_RU.UTF-8
Run Code Online (Sandbox Code Playgroud)
然后.bashrc以类似的方式正确设置它们,但不完全用ru_RU语言,如下所示:
export LC_ALL=ru_RU.UTF-8
export LANG=ru_RU.UTF-8
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
38161 次 |
| 最近记录: |