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

Mysql firefox让回形针存储特殊字符作为问号,mysql,ruby-on-rails,paperclip,Mysql,Ruby On Rails,Paperclip,当我使用Firefox上传一个名为“åäöÄÖÖ.jpg”的文件时,它将其存储为“a?a?o?a?o?.jpg” 使用Google Chrome、Safari和Internet Explorerit可以很好地工作 当我观看Rails控制台时,插入文件名的查询看起来正常: BlogHeader Update (0.4ms) UPDATE 'blog_headers' SET 'large_file_name' = 'åäöÅÄÖ.jpg', 'updated_at' = '2012

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

使用Google Chrome、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和回形针2.8.0

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

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

# encoding utf-8

在您的
环境中.rb


这也可能是mysql编码的问题,可能是mysql连接器没有正确设置编码。尝试上述操作。

我建议对字符串强制编码,例如,如果文件名位于名为file\u name的变量中:

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

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

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

我希望这可能是有效的

我添加了后一部分,没有对环境进行任何更改。rb。您的确切意思是我应该在视图中设置编码变量吗?在视图中,将
#encoding utf-8
作为第一行,您也可以尝试在查询字符串中使用utf-8字符来强制执行它,通常是utf8=✓ 添加以在浏览器中强制使用utf8
#编码utf-8
仅在页面中需要,如果要在源代码中直接使用Unicode文字,则无需操作包含Unicode的字符串。提交上载文件的表单标记是否包含:?抱歉,我们已经在database.yml文件中将编码设置为utf8。我使用的是Ruby 1.8.7,但是使用Iconv编码(例如使用曲别针的插值)不会改变任何事情。
   development:
     adapter: mysql
     encoding: utf8
     database: depot1_dev
     pool: 5
     username: root
     password: 
     host: localhost
     ...