jjzjj

ruby 1.9.2 : irb throws ArgumentError: invalid byte sequence in UTF-8 when entering German Umlaut

coder 2025-06-06 原文

我想在我的 irb 中输入德语变音符号,但出现奇怪的错误。我可以毫无问题地输入 äöü 的任何字符,但是每个 ÄÖÜß 都会导致以下错误:

$ irb
ruby-1.9.2-p136 :001 > ? # here I entered Ü but it displays only ?
/Users/lorenz/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/ruby-lex.rb:728:in
`block in lex_int2': invalid byte sequence in UTF-8 (ArgumentError)

我已经查看了很多关于 Ruby、rvm 和 UTF-8 的 SO 问题,但都没有帮助。大多数与 rails 或数据库配置相关。我专门检查了以下内容:

语言环境设置正确

$ locale
LANG="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_CTYPE="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_ALL="de_DE.UTF-8"

Terminal.app 设置为 Unicode (UTF-8) 并且 Encoding.default_external 设置正确:

$ irb
ruby-1.9.2-p136 :001 > Encoding.default_external
 => #<Encoding:UTF-8>

为什么这在 Ruby 中仍然如此困难?

最佳答案

通常您使用# coding: UTF-8 为文件设置编码。

irb 的情况下,可能需要提前明确设置它:

irb -E UTF-8:UTF-8

这将在 irb 上将内部和外部编码设置为 UTF-8。

或者另外尝试

irb -U

将内部编码设置为 UTF-8。

关于 ruby 1.9.2 : irb throws ArgumentError: invalid byte sequence in UTF-8 when entering German Umlaut,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4984895/

有关ruby 1.9.2 : irb throws ArgumentError: invalid byte sequence in UTF-8 when entering German Umlaut的更多相关文章

随机推荐