我们最近遇到了在我们的一个模型中接受 UTF-8 字符的要求。我们设置该字段以在数据库中使用正确的编码(mysql,在我的例子中是本地 mariadb)。我们都运行 Mac OSX,其终端具有正确的编码集(据我所知)。
目前我看到这种行为:
- 我的终端接受粘贴的 UTF8 字符。irb 或 rails 控制台没有
- 将字段设置为在数据库中包含 UTF8 字符时,我可以调用 Model.last 并在 rails 控制台中看到这个字符。模型无效。
- 在我同事的计算机上通过的测试运行良好,但在我的计算机上却失败了。测试以及模型文件
# encoding: utf-8
在第一行 - 这是验证:
validates_format_of :name, with: /^([[ßàáâãóôþüúðæåïçèõöÿýòäœêëìíøùîûñé]\d[a-z]-]+){3,}$/
- 测试在包含允许和不允许字符的数组上循环,检查结果是否有效。这些都失败了,没有明显的错误
- 通过浏览器输入 UTF8 字符时,此验证也会失败
我目前不知道在哪里看。任何想法表示赞赏。
物有所值:
export LC_ALL=en_US.UTF-8
并且export LANG=en_US.UTF-8
存在于我的 .zshrc
2.0.0p0 :001 > Encoding.default_internal
=> #<Encoding:UTF-8>
2.0.0p0 :002 > Encoding.default_external
=> #<Encoding:UTF-8>
$> locale
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"