IRB 转义 UTF 字符

IRB escapes UTF characters

我正在使用 OS-X (10.10.5) 和 rbenv (1.0.0) Ruby (2.2.4p230) 和 Fish Shell (2.2.0) .

当我在 irb 中输入非 ASCII 字符时,它们会自动转义。

max@MaxBook ~/p/sandbox> echo "Ö"
Ö
max@MaxBook ~/p/sandbox> irb 
irb(main):001:0> \U+FFC3\U+FFB6

虽然起初这可能是 shell 或我的终端设置的问题,但它只发生在 IRB 中。更改 shells 或 ruby 版本不会影响它。

我以前的笔记本电脑没有这个问题,它的配置几乎相同。这是怎么回事?

您可以在 IRB 中启用 unicode 支持,方法是针对 readline(而不是默认的 libedit)重新编译 Ruby。

首先安装 readline 例如 brew:

brew install readline

我使用 rbenv 管理 Ruby 版本并使用以下行安装 Ruby 版本:

RUBY_CONFIGURE_OPTS=--with-readline-dir="$(brew --prefix readline)" rbenv install 2.3.1

rvm 看起来像:

rvm install 2.3.1 --with-readline-dir=$rvm_path/usr

或者当您可能想从源代码重新编译 Ruby 时,this answer 可能会对您有所帮助。