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

もう 1 つのオプションがあります。database.yml ファイルを変更してみてください。このような

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

私はそれが仕事になることを願っています

于 2012-11-02T03:55:10.567 に答える
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 に答える