📘

[Bug #20992] マルチバイトのローカル変数が存在する時に ASCII 文字列を #eval する時とエラーになるバグ報告

2025/02/16に公開

[Bug #20992] eval(ascii_encoded_code) raises EncodingError when multibyte local variable exists

  • 以下のように ASCII コードの文字列を #eval する時にマルチバイトのローカル変数が存在するとエラーになるというバグ報告
= 1

# error: invalid symbol in encoding US-ASCII :"\xE3\x81\x82" (EncodingError)
eval '1 + 2'.encode(Encoding::ASCII)
  • これなんですが次のように binding.irb を使用するとエラーになるケースがあるみたいですね
#coding: utf-8
α=1
binding.irb
$ LANG=C ruby file.rb
From: file.rb @ line 3 :

    1: #coding: utf-8
    2: α=1
 => 3: binding.irb
irb(main):001> 1
<internal:kernel>:168:in 'Kernel#loop': invalid symbol in encoding US-ASCII :"\xCE\xB1" (EncodingError)
	from <internal:prelude>:5:in 'Binding#irb'
	from file.rb:3:in '<main>'
irb(main):002> 
  • このバグは Ruby 3.4.2 ですでに修正済
GitHubで編集を提案

Discussion