ruby-on-rails - Rails 控制台中的 Unicode 问题,但在 pry 或 irb 中没有
问题描述
我â\u0080\u0099
在一些数据库列中有内容,我试图用 ActiveRecord 查找和替换,但 Rails 运行时和控制台似乎对该字符串有问题,曲解了第一个字符。我在 Rails 控制台中看到了这一点,但在 pry 或“普通”irb 中没有看到。
当我将该字符串粘贴到 Rails 控制台时,它会转换为\U+FFC3\U+FFA2\
,然后在生成的字符串中被忽略(见下文)。
我想了解:
- 是什么让 Rails 控制台在编码方面与 irb/pry 不同,以及我如何使它在编码方面表现相似
- Rails 最初是如何将这些数据插入数据库的(我在为这种情况创建单元测试时遇到问题,我认为原因与控制台相同)
我在使用 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"
等等。
- 我注意到它在 Rails 控制台中
Encoding::default_internal
解析,但在 irb 和 pry 中解析。在 Rails 控制台中设置它也没有解决我的问题。#<Encoding:UTF-8>
nil
nil
- 最终这些字符串会像
St. Patrickâs Day
在浏览器中一样显示
解决方案
推荐阅读
- ios - 配置文件不包括 com.apple.developer.pushkit.unrestricted-VOIP 权利
- ios - SwiftUI / MapKit 注释选择和导航
- python - 列表索引超出循环范围
- spring - 用于加载配置集成测试的 Spring Boot @Import 不起作用
- javascript - 如何为聊天应用程序中的投票设计数据库架构?
- c++ - 班级的朋友无法访问
- comments - 修改 Blogger 动态视图模板中的“评论为”选项
- python-3.x - UnicodeDecodeError/无效的继续字节
- c# - 如何在c#中将字符串变量绑定到锚标记的href
- android - 如何在android studio中实现半窗