如何将阿拉伯数字转换为Ruby中的数字



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

"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!(" ")

我如何转换?

如果您执行了UTF-8编码,则可以正常工作。

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

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

返回"lexus/yr_2001_2006"

ASCII 8位并不是真正的编码。它是二进制数据,而不是基于文本的东西。将ASCII 8位转到UTF-8不是有意义的操作。我建议确保通过您的TextField通过query参数的请求使用有效的字符串编码,如果您可以控制此请求。您可以在Ruby中使用String#valid_encoding?方法检查您正在接收正确编码的字符串。

最新更新