Rails使用Transliterate进行参数化不适用于阿拉伯语/ Unicode字符串

Mah*_*led 8 ruby ruby-on-rails activesupport internationalization ruby-on-rails-3

我有一个包含阿拉伯语字符串的字符串"محمود"

当我尝试参数化这个字符串时,它返回空字符串""

x = "?????"
x.parameterize    => ""
Run Code Online (Sandbox Code Playgroud)

我检查了参数化代码,发现它调用了I18n.transliterate,返回问号"?????"

我尝试自定义音译参考上一个问题如何自定义Rails 3应用程序中的音译?

但仍然返回空白字符串.

有帮助吗?

tad*_*man 4

parameterize方法应该使字符串 URL 安全呈现,并且对 URL 中可以出现的字符类型有严格的限制。一般来说,任何不严格a-z0-9或的东西-都会被剥离。

您始终可以尝试修复它,以便默认情况下允许多字节 UTF-8 字符。目前的实施确实还很欠缺。更强大的版本不会只允许使用一小部分特定字符,而是会删除那些麻烦的字符。

  • 你是对的,我必须自己实现它 x.gsub(/\s+/, "-").gsub( /[^a-zA-Z0-9У-ili-]*/ , "") (2认同)