我正在尝试查找并替换为ActiveRecord的某些数据库列中的内容â\u0080\u0099
,但是Rails运行时和控制台似乎对该字符串有问题,误解了第一个字符。我在Rails控制台中看到了这一点,但在撬或“普通” irb中看不到。
当我将该字符串粘贴到Rails控制台中时,它将转换为\U+FFC3\U+FFA2\
,然后在生成的字符串中将其忽略(见下文)。
我想了解:
我正在使用rbenv在OS X Mojave上。我尝试了readline和environment variable解决方案,没有任何改变。
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"
等等。
Encoding::default_internal
在Rails控制台中解析为#<Encoding:UTF-8>
,但在irb和pry中解析为nil
。在Rails控制台中将其设置为nil
也不能解决我的问题。St. Patrickâs Day