2

我正在尝试从数据库迁移中的某些用户名创建一个 slug。

nick = nick.gsub('á','a')

我也很想éíóúñ改变eioun

这样做,它不起作用,我会得到:

不兼容的编码正则表达式匹配(UTF-8 正则表达式与 ASCII-8BIT 字符串)(Encoding::CompatibilityError)

但是,无论我怎么做,例如通过添加 force_encoding 方法,我总是会遇到如下编码错误:

UTF-8 中的无效字节序列 (ArgumentError)

"\xF3" 从 ASCII-8BIT 到 UTF-8 (Encoding::UndefinedConversionError)

不兼容的字符编码:ASCII-8BIT 和 UTF-8 (Encoding::CompatibilityError)

当我有一个用于更改这些人声或西班牙语 ñ 字母的 gsub 时,就会发生这种情况。

我的文件上还有encoding: utf-8一行,数据来自 UTF-8 数据库。但似乎没有任何帮助。

我已经看到了一些关于 SO 的问题,但我尝试做的任何事情都无法解决它。

顺便说一句,这与轨道无关。

4

1 回答 1

2

我终于使用了 Rails ActiveSupport 的音译

require 'active_support/all'
v = ActiveSupport::Inflector.transliterate v.downcase
v.gsub(/[^a-z1-9]+/, '-').chomp('-')

工作正常。

于 2013-07-09T14:53:03.500 回答