3

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

使用 Google Chrome、Safari 和 Internet Explorer 可以正常工作。

当我观看 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。

编辑: 解决此问题的另一种方法是在文件上传后重命名文件名(例如,使用正则表达式删除所有非 az 字符)。我一直在研究 Paperclip 中的插值,但由于这适用于已经上传的文件,它也会破坏它们。

4

3 回答 3

0

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

file_name = file_name.force_encoding("UTF-8")
于 2012-11-02T03:37:17.783 回答
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 连接器未正确设置编码。试试上面的。

于 2012-10-28T23:03:49.860 回答
0

你还有一个选择。尝试更改 database.yml 文件。像这样

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

我希望它可能是工作

于 2012-11-02T03:55:10.567 回答