ruby - 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 进程外部读取的任何数据的假定编码,例如从您的 shell 中读取的数据gets)
在 Windows 上更改为 UTF-8。这是对 Windows 上发生的各种编码问题的响应。
但是,您从 shell 中读取的数据不是 UTF-8 编码的。相反,您的 shell 似乎使用了一些不同的编码,例如cp850
.
一种可能的解决方法是指示 Ruby 假设您的环境的语言环境编码,您可以使用-E
命令调用上的开关进行设置,例如:
irb -E locale
或通过Encoding.default_external
在脚本中手动设置为环境的正确编码。
推荐阅读
- javascript - 如何使用需要循环 100 万次的函数修复“超出最大调用堆栈大小”错误
- python - 如何在熊猫数据框中使用特殊字符将日期值与文本列分开?
- jquery - 我很难在 Jquery 中禁用一个函数
- python - 命令队列失败:OUT_OF_HOST_MEMORY
- java - 在数组函数中相乘
- ruby - 如何将先前循环迭代的计算值相加?
- python - 访问 Selenium“选择器”对象、Python / Scrapy 的属性/数据
- julia - 如何在有限的时间内运行代码?
- java - 通过内部类引用调用外部类中的内部方法
- python - 从python中的不同文件夹路径导入自定义库