解决Rakefile读取cmd中字符的乱码问题
问题:当我在使用Jekyll工具来学习并编写博客时,为了能够自动化处理Yaml头信息的编写时,我拷贝网上的Rakefile文件,但是这个文件在windows下读取cmd的中文字符串时是造成乱码的。
原因:
在cmd下
C:\Users\Administrator>chcp
活动代码页: 936
上面的代码意思是本机的cmd采用的编码的活动代码页是936也就是GBK编码,而markdown文件中采用的编码是UTF-8,因此编码不同,所以在UTF-8的编码环境中打开的话就会造成乱码。而我猜想我们的问题根源可能是Rakefile读取cmd中的字符是以GBK的编码形式写入到UTF-8的markdown文件中引起的。
解决办法
法一、修改cmd的默认编码
C:\Users\Administrator>chcp utf-8
活动代码页: 65001
结果:so navia , cmd下的UTF-8是不支持中文输入。所以我就gg了。。。
法二、Rakefile文件
Ruby语言是陌生的,但是Rakefile文件中有这么一段代码是熟悉的
puts "请输入要创建文件名):"
@url = STDIN.gets.chomp
我猜STDIN应该是standard input(也就是标准设备输入—键盘呗),既然是编码不同造成的,所以就看能不能找到Ruby中一个方法能够将字符的编码进行转换的。因为,我记得Python中是有这么一种方法的,所以Ruby也会是有的。当我查阅了Ruby的API时,发现了这么一种方法.encoding(“UTF-8”),于是我就尝试的使用了一下,果然可以!
即将代码改为下面的形式
puts "请输入要创建的文件名"
@url =STDIN.gets.chomp.encoding("UTF-8")