My Rails 3.2.2/Ruby 1.9.3应用程序获取搜索请求,例如:
http://booko.com.au/books/search?q=Fran%E7ois+Vergniolle+de+Chantal
Run Code Online (Sandbox Code Playgroud)
Ruby/Rails接受此查询并对其进行解码 - 但假设它是UTF-8.在某些时候,我得到一个:
invalid byte sequence in UTF-8
app/models/product.rb:694:in `upcase'
Run Code Online (Sandbox Code Playgroud)
我认为它正在做这样的事情:
q="Fran%E7ois+Vergniolle+de+Chantal"
=> "Fran%E7ois+Vergniolle+de+Chantal"
CGI.unescape( q )
=> "Fran\xE7ois Vergniolle de Chantal"
CGI.unescape( q ).encoding.name
=> "UTF-8"
CGI.unescape( q ).valid_encoding?
=> false
Run Code Online (Sandbox Code Playgroud)
处理这个问题的正确方法是什么?我想将其转码为正确的编码 - 但我如何确定当前的编码?我现在正在做的,只是假设它是LATIN1:
q.encode!("ISO-8859-1", "UTF-8", :invalid => :replace, :undef => :replace, :replace => "")
Run Code Online (Sandbox Code Playgroud)
或者做某些我在博客上找到的东西:
q = q.unpack('C*').pack('U*')
Run Code Online (Sandbox Code Playgroud)
处理这个问题的正确方法是什么?
编辑 服务器正在向客户端正确发送"Content-Type:text/html; charset = utf-8"标头.该页面还包含相应的元标记:'meta http-equiv ="content-type"content ="text/html; charset = UTF-8"'
不确定是否有另一种方法告诉客户端使用哪种编码?
你好Stackoverflow人,
我经营一个网站,发现其用户是最便宜的购买书籍的地方.这对于一本书来说很容易,但对于多本书来说,在一家商店购买一本书和从另一家商店购买另一本书有时会更便宜.
目前我找到了销售用户列表中所有书籍的最便宜的商店,但我希望拥有一个更智能的系统.这里有更多信息:
不确定这里链接到我的网站是否很酷,但它列在我的用户个人资料中.
我希望能够找到最便宜的商店和书籍组合.
我担心它需要蛮力的方法 - 并且有35家商店,对于适量的书籍来说,组合的数量将是巨大的.我觉得组合的数量是(#shops)^(#books) - 但不是100%
问题是,我应该采用什么方法?这个问题是否适合众所周知的问题?如果需要蛮力,在Ruby中这样做的好方法是什么?我可以优先考虑商店先尝试吗?
在Ruby中计算字节是否具有奇数或偶数奇偶校验的最佳方法是什么?我有一个版本工作:
result = "AB".to_i(16).to_s(2).count('1').odd?
=> true
Run Code Online (Sandbox Code Playgroud)
将数字转换为字符串并计算"1"似乎是计算奇偶校验的一种不好的方法.有更好的方法吗?
我希望能够计算3DES密钥的奇偶校验.最终,我想将偶数字节转换为奇数.
谢谢,丹
我想知道是否有人对在Ruby中解析具有固定长度记录的文件有任何建议.该文件有几个部分,每个部分都有一个标题,n个数据元素和一个页脚.例如(这是完全废话 - 但内容大致相似)
1923 000-230SomeHeader 0303030
209231-231992395 MoreData
293894-329899834 SomeData
298342-323423409 OtherData
3 3423942Footer record 9832422
Run Code Online (Sandbox Code Playgroud)
在此示例中,页眉,页脚和数据行均以特定数字(1,2和3)开头.
我查看了http://rubyforge.org/projects/file-formatter/它看起来不错 - 除了文档很轻,我看不到如何拥有n个数据元素.
干杯,丹