为了解决一些我自己使用上的一些编码问题,我 fork 了这个版本。同样也希望能够给遇到类似问题的朋友有所帮助。
可能有一些实现是 quick and dirty 的,但我会尝试尽量让实现更通用和正确。
如果有时间,我会尝试梳理一下 ruby 的内部编码体系,并尝试进行较彻底的改进。但是我现在还没有找到 ruby 内部实现的关于的编码方面的设计文档和原则,所以也不太清楚自己的修改是不是合理。
我要实现的目标:
- 在中文的 windows 系统上,内部编码使用 utf-8 的情况下,写 ruby 代码时不再需要显式的转码操作,底层自动做好转码操作,给到 ruby 代码里面的都是编码成内部编码的。
- 在中文的 windows 系统上,输入和输出的中文都没有问题,都不出现乱码,包括所有的异常和出错信息。
- 无论在什么语言的 windows 系统上,我都可以使用不同的预算的 ruby 脚本文件,并且不需要做显式的转码操作,自动在内外部交互的边界进行编码的转换。
已经完成的工作:
- 使用 ruby -Egbk:utf-8 rubyfile.rb 进行调用,建议文件头统一设置$stdout.set_encoding("utf-8") 和$stderr.set_encoding('utf-8“)
- 打开中文路径,require 中文文件都没有问题,不需要做显式编码转换。
- puts,以及异常,错误输出都正确处理中文,包括中文方法名,文件名等。
项目地址:https://github.com/jiayp/eiruby
求编译好的程序的存储地。