我想在我的窗口中使用带有终端输入的 ruby。为什么 ruby 社区不能在 windows 上解决这个 UTF-8 问题?难吗?我想知道 python、java 或其他语言是如何做到这一点的?我可以在 windows utf-8 上很好地使用 python,没有痛苦。
使用红宝石 3.0.1
x = gets.chomp
çağrı
=> "\x87a\xA7r\x8D"
puts x
�a�r�
=> nil
x.valid_encoding?
=> false
我查了这个https://bugs.ruby-lang.org/issues/16604它没有用。
在 Ruby 3.0 中,默认的外部编码(即从 ruby 进程外部读取的任何数据的假定编码,例如gets)
在 Windows 上使用时从您的 shell 中读取的数据。这是对 Windows 上编码发生的各种问题的响应。
但是,您从 shell 读取的数据不是 UTF-8 编码的。相反,您的外壳似乎使用了一些不同的编码,例如cp850
.
一种可能的解决方法是指示 Ruby 假设您的环境的区域设置编码,您可以使用-E
命令调用时的开关设置该编码,例如:
irb -E locale
或者通过Encoding.default_external
在脚本中手动设置为环境的正确编码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句