ruby - 如何解决命令执行的 UTF-8 问题
问题描述
当我使用反引号执行命令并使用它打印输出时puts
,会显示问号而不是正确的字符。这是我的代码(只是一个测试,让你更容易阅读):
# encoding: utf-8
# Trying without encoding after
puts `echo Just ä täst`
# Trying with encoding after
puts `echo Just ä täst`.encode("UTF-8", :invalid=>:replace, :replace=>"0")
输出如下:
Just � t�st
Just 0 t0st
另外,如果我尝试将其拆分为
puts `echo Just ä täst`.split(" ")
我收到以下错误:
./utf_test.rb:9:in `split': invalid byte sequence in UTF-8 (ArgumentError)
from ./utf_test.rb:9:in `<main>'
但是当我只是打印到屏幕上时,它可以工作,即puts 'just ä täst'
导致just ä täst
被打印。