高橋征義です。 2009年9月25日19:04 <eiichi_maekawa / mhi.co.jp>: > るびきちさん 結果は、以下でした。 > > 1.コーディング > > #!D:/Ruby/bin/ruby.exe > # -*- coding: windows-31j -*- > require 'kconv' > require 'nkf' > require 'D:/Apache2.2/htdocs/ruby_prg/ruby19check/myclass' #MyClass 変換メ > ソッド等 > > # 試験データ > # 文字→HEXへ変換するためのデータ > > data1 = '船海システムG' # 26バイトの '91448a43835683588365838047'に変換する > data2 = 'TEST' # 8バイトの '54455354'に変換する > data3 ='船' > data4 ='kaisya会社123重厚重工業・・あaア /\¥' > data5 ='kaisya会社123重厚重工業あaイ ' > 〜以下略〜 気になったので確認してみました。 Ruby 1.9では、マルチバイト文字を「\」でエスケープ?しようと した文字列、例えば '\あ' みたいな文字列リテラルは 「invalid multibyte char」のエラーが発生することがあるようです。 C:\Users\takahashi\Desktop>cat test2.rb # -*- coding: windows-31j -*- str = '\あ' C:\Users\takahashi\Desktop>ruby -v test2.rb ruby 1.9.1p243 (2009-07-16 revision 24175) [i386-mswin32] test2.rb:2: invalid multibyte char (Windows-31J) test2.rb:2: unterminated string meets end of file とはいえ、前川さんが意図していたdata4は上記のプログラムでの実装とは 異なるのではないでしょうか。実は「あaア /\¥」ではなく「あaア /\\¥」 または「あaア /¥」が正しかったりはしないですか? であれば これを修正していただくのが確実です。 という前川さんの問題とは別に、このような文字列リテラルの挙動は エラーで正しいのでしょうかね。ASCII文字では問題なさそうですし。 本来はどういう扱いであるべきなのでしょうか? 高橋征義 (maki / rubycolor.org)