• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Ruby1.9で文字列の置換がうまくいきません。)

Ruby1.9で文字列の置換がうまくいかない原因と解決方法

このQ&Aのポイント
  • Ruby1.9で文字列の置換がうまくいかない場合、Encooding::CommpatibillityErrorというエラーが発生することがあります。このエラーは、文字コードの互換性に関する問題が原因で発生することが多いです。具体的には、半角文字と全角文字の混在や、文字コードの違いが原因となります。
  • エラー発生の原因を解消するためには、まず文字コードの統一を行う必要があります。例えば、半角文字を全角文字に変換する場合は、NKFモジュールを使用することで簡単に変換することができます。また、正しい置換処理を行うためには指定文字列の正規表現パターンを使用することが重要です。
  • 以上のことから、Ruby1.9で文字列の置換がうまくいかない場合は、文字コードの互換性と正規表現パターンの確認を行うことが重要です。また、より簡単な方法としては、Stringクラスのメソッドを使用することもできます。具体的な処理方法については、ドキュメントや実際のコード例を参考にしてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • siffon9
  • ベストアンサー率64% (136/211)
回答No.1

プログラムを書かれている文字コードは何でしょうか? moji2 = NKF::nkf( '-SsXm0', moji2 )でShift-JISのStringがmoji2に代入されますが、moji1やmoji3は他のエンコードのStringが代入されているのでエンコードが一致しないというエラーになっているのだと思います。 私の環境(Windows VISTA)では以下の様になりました。 # coding: Windows-31J だと test.rb:20:in `gsub': incompatible encoding regexp match (Shift_JIS regexp with Windows-31J string) (Encoding::CompatibilityError) from test.rb:20:in `<main>' となったので moji2 = NKF.nkf( '-SsXm0', moji2 ) moji2 = moji2.encode('Windows-31J') ←この行を追加してエンコードを一致させるとエラーは無くなりました。 # coding: shift_jis では エラーは発生しませんでした。

NOBU4517
質問者

お礼

'Windows-31J'で解決しました。有難う御座いました。

関連するQ&A