当我使用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中的插值,但由于这适用于已经上传的文件,它也会破坏它们。
答案 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
...
我希望它可能有效