windowsでの文字コードでハマった

Rubyのコードでハマりまして、とてもハマりました。

・WINDOWS 7
・Ruby 2.0
・やりたいこと
 特定のフォルダに入っている特定のファイル(複数)を片っ端から印刷する(一番左のシートだけ)

こんなコードを書いてました

まず抽出するところを見てみたくて色々していました。

# coding: Windows-31J
require 'find'
require 'pp'
file =[]
Find.find('.') do |f|
next unless f.match(/テンプレート/s)
puts f.encoding
file
こんな感じで日本語を抽出しようとしていたんですが、見事に文字化けしまくりました。
そもそも、.matchが文字コードがずれてるとかマルチバイト文字だとかでエラー吐いて終わります。
悲しみ。
それで先輩にご教授いただき一行追加して解決しました。
# coding: Windows-31J
require 'find'
require 'pp'
Encoding.default_external = 'Windows-31J'
file =[]
Find.find('.') do |f|
next unless f.match(/テンプレート/s)
puts f.encoding
file
これで無事いった!かと思ったら、まさかのsublime textで編集しているファイルがutf-8でエラーが出て
そちらもsjisにして解決いたしました。
windowsの日本語本当わかってないで取り組むと悲しみが深まってゆきます。
Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です