首页 > 解决方案 > Rails 控制台中的 Unicode 问题,但在 pry 或 irb 中没有

问题描述

â\u0080\u0099在一些数据库列中有内容,我试图用 ActiveRecord 查找和替换,但 Rails 运行时和控制台似乎对该字符串有问题,曲解了第一个字符。我在 Rails 控制台中看到了这一点,但在 pry 或“普通”irb 中没有看到。

当我将该字符串粘贴到 Rails 控制台时,它会转换为\U+FFC3\U+FFA2\,然后在生成的字符串中被忽略(见下文)。

我想了解:

我在使用 rbenv 的 OS X Mojave 上。我已经尝试了readline环境变量解决方案,没有任何变化。

bin/rails 控制台

Running via Spring preloader in process 99194
Loading development environment (Rails 5.2.2)
Cannot read termcap database;
using dumb terminal settings.
irb(main):001:0> RUBY_VERSION
=> "2.5.3"
irb(main):002:0> Encoding::default_internal
=> #<Encoding:UTF-8>
irb(main):004:0> s = '\U+FFC3\U+FFA2\u0080\u0099'
=> "\\u0080\\u0099"
irb(main):005:0> s = "\U+FFC3\U+FFA2\u0080\u0099"
=> "\u0080\u0099"

irb

irb(main):018:0> RUBY_VERSION
=> "2.5.3"
irb(main):019:0> s = 'â\u0080\u0099'
=> "â\\u0080\\u0099"

$ gem list | grep pry
pry (0.12.2)
$ pry
[1] pry(main)> RUBY_VERSION
=> "2.5.3"
[2] pry(main)> s = "â\u0080\u0099"
=> "â\u0080\u0099"

等等。

标签: ruby-on-railsunicode

解决方案


推荐阅读