我正在尝试从数据库迁移中的某些用户名创建一个slug。
nick = nick.gsub('á','a')
我真的希望将éíóúñ
改为eioun
。
这样做,它不起作用,我会得到:
不兼容的编码regexp匹配(UTF-8 regexp与ASCII-8BIT字符串)(Encoding :: CompatibilityError)
但是,不过我这样做,例如通过添加force_encoding方法,我总是得到编码错误,如:
UTF-8中无效的字节序列(ArgumentError)
“\ xF3”从ASCII-8BIT到UTF-8(编码:: UndefinedConversionError)
不兼容的字符编码:ASCII-8BIT和UTF-8(Encoding :: CompatibilityError)
当我有一个改变那些人声或西班牙语字母的gsub时,就会发生这种情况。
我的文件上还有encoding: utf-8
行,数据来自UTF-8数据库。但似乎没有任何帮助。
我在SO上看过一些问题,但我尝试做的任何事情都没有解决它。
顺便说一句,这与轨道无关。
答案 0 :(得分:1)
我最终使用了来自Rails ActiveSupport的音译:
require 'active_support/all'
v = ActiveSupport::Inflector.transliterate v.downcase
v.gsub(/[^a-z1-9]+/, '-').chomp('-')
工作正常。