プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
Ruby1.9、正規表現のエンコードでハマった
Ruby1.9、文字数の取得」の記事を書くために
あれやこれやと遊んでましてね。
Windows7環境Ruby1.9でこんなコードを書いたのですφ(--)

■test06.rb(Shift_JIS)
  # -*- coding: shift_jis -*-

  str1 = "あいうえお"
  print str1.split(//s).length


特に変なことをしたつもりはないのですがこれを実行したら
こんなエラーが出やがりましたφ(--;

test06.rb:4:in `split': incompatible encoding regexp match
 (Windows-31J regexp with Shift_JIS string)
 (Encoding::CompatibilityError)
        from test06.rb:4:in `<main>'


要はエンコードあってねーぞ!ってお叱りの声ですよね。
「文字列は『Shift_JIS』だけど正規表現側は『Windows-31J』待ってんだ!」
適当に要約してしまうとそんなこと言ってます。

おーまいがっ(-A-)
Windows-31JもShift_JISも似たよーなもんだべ。
気合見せろよ!気合を!

と言ったところで聞いちゃくれねーからな。
取りあえずはこれで逃げましたφ(--)

■test07.rb(Shift_JIS)
  # -*- coding: shift_jis -*-
  
  str1 = "あいうえお"
.encode("UTF-8")
  print str1.split(//u).length

Shift_JISのくせにUTF-8で統一してやったぜ\(--)/
もーいーや、完了\(--)/



















ちなみにですね(-。-)ぼそっ

今更ですが思いついちゃったのでこれを試したら
あっさり動きましたφ(--;

■test08.rb(Shift_JIS)
  # -*- coding: Windows-31J -*-
  
  str1 = "あいうえお"
  print str1.split(//s).length



なんで最初に気づかなかったのだろう_| ̄|○
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● Ruby  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事