2011-09-14 2 views
2

Herorm의 Rails 3 앱에서 움라우트가 포함 된 파일 이름이 dragonfly을 통해 이미지를 업로드하고 있습니다. 그럼 난 개발 모두에서레일 : 파일 이름의 image_tag 도우미/움라우트가 생산시 오류를 발생합니다.

image_tag @model.image.url, … 

가 잘 작동 사용하여 이미지를 표시하기 위해 노력하고있어,하지만 생산에 나는 점점 해요 :

incompatible character encodings: UTF-8 and ASCII-8BIT 
.bundle/gems/ruby/1.9.1/gems/actionpack-3.0.7/lib/action_view/helpers/tag_helper.rb:129:in `*' 

을 내가 추가 한 비트를 읽은 후

Encoding.default_external = Encoding::UTF_8 
Encoding.default_internal = Encoding::UTF_8 

environment.rb이지만 문제가 남아 있습니다.

이 문제를 해결하는 적절한 방법은 무엇입니까? 업로드 할 때 파일 이름을 고쳐야합니까? 나는 이것이 레일즈 3에서 잘 작동해야한다는 인상 아래에 있었습니까?

답변

1

글쎄, 당신은 데이터베이스에 저장하기 전에 당신은 또한 단순히 모델의 URL을 살균 할 수 url.force_encoding('utf8')

같은 것을 시도해 볼 수도 있습니다 - 그게 내가 무슨 짓을했는지. 그리고 예, 저는 때때로 이상한 곳에서도 이것을 우연히 발견합니다. 자신의 ASCII 대응과 독일 umlaute을 대체 강조하고 다른 모든 드롭하는 공간으로 변환됩니다

# encoding: UTF-8 
class Page < ActiveRecord::Base 
    before_save :sanitize_title 

    private 
    def sanitize_title 
    self.title = self.title.force_encoding('UTF-8').downcase.gsub(/[ \-äöüß]/, ' ' => '_', '-' => '_', 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss').gsub(/[^a-z_]/,'') 
    end 
end 

이 :

이 내 모델이 어떻게 생겼는지입니다. 첫 번째 줄 # encoding: UTF-8 중요하다 또는 루비 @ 할 ... model.rb 파일에서 비 ASCII 문자의 Rhywden의 대답, 잠자리에 대한 구체적인 여기 내 솔루션 또한

+0

나는이 일을 끝내지 만, 구현은 약간 다릅니다 (제 답변을보십시오). 건배! – polarblau

관련 문제