Skip to content

Instantly share code, notes, and snippets.

@hyuki

hyuki/chat.md Secret

Last active April 17, 2023 22:48
Show Gist options
  • Select an option

  • Save hyuki/2e88457b7f13c01a55947596686571b8 to your computer and use it in GitHub Desktop.

Select an option

Save hyuki/2e88457b7f13c01a55947596686571b8 to your computer and use it in GitHub Desktop.
#ChatGPT と結城浩の対話: Rubyでファイルを読み込むときのエンコーディング指定について

Model: GPT-4

以下に示すRubyのプログラムを動かすと、gsub!のところで「in `gsub!': invalid byte sequence in US-ASCII」というエラーになります。これはquestion_fileをUTF-8として認識していないからだと思うのですが、どのように対処したらいいでしょうか。実際にはquestion_fileの内容はUTF-8です。

description = IO.readlines(question_file).join('')
description.gsub!(/'/, '(quote)')

プログラムのエラーが「invalid byte sequence in US-ASCII」というものであることから、RubyはファイルのエンコーディングをUTF-8ではなくUS-ASCIIとして解釈しています。これはRubyのデフォルトの外部エンコーディングがUS-ASCIIであるためです。

この問題を解決するには、ファイルを開く際に明示的にUTF-8エンコーディングを指定することができます。以下のようにコードを変更してみてください。

description = IO.readlines(question_file, encoding: 'UTF-8').join('')
description.gsub!(/'/, '(quote)')

これで、question_fileがUTF-8として正しく認識され、エラーが解消されるはずです。

@hyuki
Copy link
Copy Markdown
Author

hyuki commented Apr 17, 2023

このページは以下の「結城浩のメールマガジン」から参照されています。ぜひお読みください。
Webサービス「結城浩に聞いてみよう」をMastodonで再起動

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment