为了解决一些我自己使用上的一些编码问题,我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
欢迎大家共同参与,更好的改进ruby的编码机制
求编译好的程序的存储地。