Windows 10 终端输入上的 Ruby irb utf-8 编码问题

塞尔坎蒂尔纳瓦利

我想在我的窗口中使用带有终端输入的 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章