首页 > 解决方案 > 如何解决命令执行的 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被打印。

标签: rubywindowsencodingutf-8windows-console

解决方案


推荐阅读