關於文字編碼的繼續探討

依然是《Ruby基礎教程》中的例子,這回程序需要根據輸入的參數進行處理,我們在用irb命令的時候,直接在程序文件名後面加上參數就可以了,那麼假如要使用Rubymine等IDE的時候呢?

pattern = Regexp.new(ARGV[0])
filename = ARGV[1]

File.open(filename) do |file|
  file.each_line do |line|
    if pattern =~ line
      print line
    end
  end
end

 其實IDE肯定要比寫命令高效和準確的,只需按照下面這樣設置就可以了。

然後進入到運行和Debug參數設置頁面,如下進行設置。

 

我們在設置完成之後發現還是會報錯,原因是參數中的日文編碼是GBK的,而我們程序中的文字編碼是UTF-8的,所以對程序中接收到的參數使用encode方法進行編碼轉換之後就可以正常進行了。修改之後我的程序是這樣的:

Encoding.default_external = Encoding.find('utf-8')

pattern = Regexp.new(ARGV[0].to_s.encode('utf-8'))
filename = ARGV[1]

countS = 0
File.open(filename) do |file|
  file.each_line do |line|
    if pattern =~ line
      print line
      countS += 1
    end
  end
end
print "含有" << ARGV[0].to_s.encode('utf-8') << "的行數爲:" << countS.to_s

當然還有一些可以完善的地方,歡迎大家拍磚。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章