Movatterモバイル変換


[0]ホーム

URL:


BLOGTIMES

cles::blog

平常心是道
« :: »
2013/03/31

invalid byte sequence in Windows-31J が出たときは

  ruby  charset 
このエントリーをはてなブックマークに追加

以前も Ruby 1.9 の文字コード周りはEncoding::CompatibilityError にハマったり、Encoding::UndefinedConversionError にハマったりしましたが、今日はinvalid byte sequence in Windows-31J というエラーにどっぷりとハマってしまいました。コードは極簡単な TSV を読み取って表示するだけのもの。

hoge.rb

require 'csv'CSV.foreach('hoge.txt', :headers => true, :col_sep=>"\t") do |row| puts rowend

これを実行するとこんな感じになってしまいます。

C:\>jruby hoge.rbArgumentError: invalid byte sequence in Windows-31J =~ at org/jruby/RubyRegexp.java:1487 =~ at org/jruby/RubyString.java:1715 init_separators at c:/jruby-1.7.3/lib/ruby/1.9/csv.rb:2058 initialize at c:/jruby-1.7.3/lib/ruby/1.9/csv.rb:1590 open at c:/jruby-1.7.3/lib/ruby/1.9/csv.rb:1349 foreach at c:/jruby-1.7.3/lib/ruby/1.9/csv.rb:1207 (root) at hoge.rb:3

これは Encoding.default_external と実際の文字コードがずれているために発生するようなので、起動時に -E オプションで文字コードを指定してやるか、

ruby -Eutf-8 hoge.rb

もしくは下記のように Encoding.default_external の値をファイル内の文字コードと合わせてやればいいようです。

Encoding.default_external = 'UTF-8'

File.open() を使う場合には、File.open('hoge.txt', 'r:utf-8') という感じで、モード設定のところに文字コードが指定できます。
今回は -E でオプションを設定してみたところ、うまくいきました。

C:\>jruby -Eutf-8 hoge.rbほげ,ふが

参考


    byhsur at 22:32[5年前][4年前][3年前][2年前][1年前][1年後][2年後][3年後][4年後][5年後] |
    こんな記事もあります 「1.7.3 Encoding rb
    2024 年の人気エントリ Top 100
    日教組の教研集会で電磁波過敏症が議題に
    Lenovo ThinkPad X1 Carbon Gen 11 を手に入れた!
    Pascal の生みの親ヴィルトが逝去
    2023 年の人気エントリ Top 100
    Thunderbird で Exchange Online ( m365 ) の共有メールボックスにアクセスする
    GPS ロガーを自作
    来月から自転車のヘルメットが努力義務化
    カンファレンスのバンケット
    H3 の打ち上げは発射直前に中止に
    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/5698
    Trackbacks
    Vagrantでshellscriptによるprovisionをしようとしたらエラーが出ました。 [default] Running cleanup tasks for 'shell' provisioner... C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.4.2/plugins/provisioners/shell/provisioner.rb:88:in `gsub!': invalid byte sequence in Windows-31J (ArgumentError) from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.4.2/plugins/provisioners/shell/pro...
    DQNEO起業日記 (2014/02/02 20:08)
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL:Yahoo! JAPAN IDでログイン

    « :: »
    Copyright © 2004-2023 by CLES All Rights Reserved.
    サイト内検索
    検索ワードランキング
    へぇが多いエントリ
    閲覧数が多いエントリ
    1 .アーロンチェアのポスチャーフィットを修理(99682)
    2 .年次の人間ドックへ(99094)
    3 .福岡銀がデマの投稿者への刑事告訴を検討中(99084)
    4 .三菱鉛筆がラミーを買収(98693)
    5 .2023 年分の確定申告完了!(1つめ)(98662)
    最新のエントリ
    cles::blogについて
    誰が書いてる?
    最近行った場所
    サイトポリシー
    タグ一覧
    検索ワードランキング

    Referrers

      Powered by CLES
      Nucleus CMS v3.31SP3/w memcached
      21375755(W:6380 Y:1545 T:1574)
      cles::blogのはてなブックマーク数
      benchmark


      [8]ページ先頭

      ©2009-2025 Movatter.jp