firefox使回形针存储特殊字符作为问号

时间:2012-10-19 12:25:30

标签: mysql ruby-on-rails paperclip

当我使用Firefox上传名为'åäöÅÄÖ.jpg'的文件时,它将其存储为'a?a?o?A?A?O?.jpg'

使用谷歌浏览器,Safari和Internet Explorerit可以正常使用。

当我观看Rails控制台时,插入文件名的查询看起来没问题:

BlogHeader Update (0.4ms)   UPDATE 'blog_headers' 
  SET 'large_file_name' = 'åäöÅÄÖ.jpg', 
  'updated_at' = '2012-10-19 14:13:36' WHERE 'id' = 14`

显然是一个编码问题,但我似乎无法追踪它所沿线的位置。有任何想法吗?使用Rails 2.3.11和Paperclip 2.8.0。

修改 另一种解决方法是在文件上传后重命名文件名(例如,使用正则表达式删除所有非a-z字符)。我一直在寻找Paperclip中的插值,但由于这适用于已经上传的文件,它也会破坏它们。

3 个答案:

答案 0 :(得分:0)

这显然是一个编码问题,似乎firefox没有为你强制使用utf8,你可以尝试将它放在视图中:

# encoding utf-8

if defined? Encoding 
  Encoding.default_internal = 'UTF-8'
  Encoding.default_external = Encoding::UTF_8
end

environment.rb

这也可能是你的mysql编码的一个问题,也许mysql连接器没有正确设置编码。试试上面的内容。

答案 1 :(得分:0)

我建议强制对字符串进行编码,例如:如果文件名在名为file_name的变量中:

file_name = file_name.force_encoding("UTF-8")

答案 2 :(得分:0)

您还有一个选择。尝试更改database.yml文件。喜欢这个

   development:
     adapter: mysql
     encoding: utf8
     database: depot1_dev
     pool: 5
     username: root
     password: 
     host: localhost
     ...

我希望它可能有效