模板里写中文的附近如果有代码出错了,应该会显示类似这样的东西嘛:
Extracted source (around line #15): 12: 13: %h2 汉字 15: =lin_to image_tag(user.avatar.url)
升到 3.2 之后“汉字”部分就成乱码了...
然后我就发了一个 pull request 过去。。 我用 Rails 才 5 个月..给这种牛人云集的项目发 request 总有点心虚... 大家有这个情况吗?
这里 force_encoding('utf-8') 肯定是不对的,如果本身页面编码不是 utf-8 的,完全就乱码了。
是不是 3.2 在编码配置上有什么改变,这个可以看一下 change log.
支持! 但修改的这段代码好像逻辑不是很通 extract.force_encoding("UTF-8") if extract.respond_to?(:encode!)
extract.force_encoding("UTF-8") if extract.respond_to?(:encode!)
http://ruby-doc.org/core-1.9.3/Object.html#method-i-respond_to-3F
respond_to?(symbol, include_private=false) Returns true if obj responds to the given method. Private methods are included in the search only if the optional second parameter evaluates to true.
#1 楼 @Saito 代码我已经找到了啊,不是改进编码配置,就是一个 bug fix 引入的 https://github.com/rails/rails/pull/3816
他说的问题感觉我们怎么从来没遇到过。。这样的问题国内应用应该很常见。。
不知道怎么改好。。再读读 rails 的代码。。
#3 楼 @cqpx 我尝试修复了一下,先 force_encoding(Encoding.default_internal) ,再进行 valid_encoding? 验证,不通过再进行 encode!
https://github.com/rails/rails/commit/19292a70fb553895693f496ef2bd09ade4ab7890 @josevalim fix 了