参数包括阿拉伯数字,我想将其转换为数字: -
"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!(" ")
我怎么能转换这个?
答案 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
方法来检查您是否收到了正确编码的字符串。