如何在ruby

时间:2017-09-27 14:39:31

标签: ruby-on-rails ruby localization numbers encode

参数包括阿拉伯数字,我想将其转换为数字: -

"lexus/yr_٢٠٠١_٢٠٠٦"

我试过这个

params[:query].tr!('٠١٢٣٤٥٦٧٨٩','0123456789').delete!(" ")

但是它会出错

Encoding::CompatibilityError Exception: incompatible character encodings: UTF-8 and ASCII-8BIT

为此我

params[:query].force_encoding('utf-8').encode.tr!('٠١٢٣٤٥٦٧٨٩','0123456789').delete!(" ")

我怎么能转换这个?

1 个答案:

答案 0 :(得分:3)

如果你已经强制执行UTF-8编码,那么这应该可以正常工作。

a > 8 & b > 15 & c > 13

str = "lexus/yr_٢٠٠١_٢٠٠٦"

返回str.tr('٠١٢٣٤٥٦٧٨٩','0123456789')

ASCII 8位实际上不是一种编码。它是二进制数据,而不是基于文本的东西。将ASCII 8位转码为UTF-8并不是一项有意义的操作。我建议您确保通过文本字段传递"lexus/yr_2001_2006"参数的请求使用有效的字符串编码,如果您可以控制它。您可以在ruby中使用query方法来检查您是否收到了正确编码的字符串。