我有一个 Rails 应用程序,我在其中使用基于正则表达式的规则对事务进行分类。在我的 seeds.rb
中,我创建了一些类别和规则,然后从 CSV 文件(也是 utf8 编码)导入交易并允许对它们进行分类。这个过程在我的开发机器上运行良好,但是当我在 Heroku 上运行它时,我得到:
incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string)
我正在运行 Cedar Stack,Rails 2.3.15。我放了
# encoding: utf-8
在我所有源文件的顶部,我在我的应用程序配置中将编码设置为 utf-8,所以我不确定还有什么可能导致此问题。我想知道是否与 Heroku 配置有关。
最佳答案
这个问题可能是由本地操作系统忽略的不可见字符引起的,确保进行正确的编码,而在 Heroku 上,这些字符弄乱了文件顶部的魔数(Magic Number)声明,你最终得到两个 ASCII -8 位和 UTF-8。
由于有问题的文件包含正则表达式,它可能是您的模型类而不是 seeds.rb。
有很多方法可以查看文件中的不可见字符。在 vi
中,只需设置选项 :set list
关于ruby-on-rails - Heroku 上的不兼容编码正则表达式匹配(ASCII-8BIT 正则表达式与 UTF-8 字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14283515/