2010-04-26 2 views
1

Rails 앱에서 jQuery와 Uploadify를 설정하고 있습니다 (uploadify-rails 플러그인 사용). 모든 것이 잘 진행되고, 플래시가로드되고, 인증 매개 변수가 세션 키와 함께 전달됩니다. 그러나 플래시에서 업로드를 처리하는 방법에 대한 MySQL 쿼리는 모두 '중복 UTF-8 시퀀스'오류를보고합니다.Ruby Rails, jQuery, Uploadify - 이상한 UTF-8 오류

Processing RoomsController#update to json (for 86.162.102.136 at 2010-04-26 11:27:55) [PUT] 
Parameters: {"Filename"=>"fb-logo.png", "_myapp_session"=>"BAh7CzoPc2Vzc2lvbl9pZCIlY2I5N2FjYjQ4ZjcwMmQzMzQxMjIwMmRmN2EwM2ZhZWM6EWludmFsaWRfdXNlckY6EF9jc3JmX3Rva2VuIjEzSWtvaGJrWDNhQXV6OGtuUllyMmdhbkVnR3JKV2QrM3RrVVJZaTJiak1vPToQam9pbl9zb3VyY2UiN2h0dHA6Ly9iZXRhLmNyYXNocGFkZGVyLmNvbS9wcm9maWxlL2V4Y2VsbGVudGxhcmtzIgpmbGFzaElDOidBY3Rpb25Db250cm9sbGVyOjpGbGFzaDo6Rmxhc2hIYXNoewAGOgpAdXNlZHsAOgx1c2VyX2lkaQY=--52b594041395bf8cf5998859eb43c4ed82c74490", "format"=>"json", "folder"=>"/rooms/", "action"=>"update", "authenticity_token"=>"3IkohkX3aAuz8knRYr2ganEgGrJWd 3tkURYi2bjMo=", "_method"=>"PUT", "id"=>"2120", "Upload"=>"Submit Query", "fileext"=>"*.jpg;*.jpeg;*.gif;*.png", "controller"=>"rooms", "room"=>{"photo_uploads"=>#<File:/tmp/RackMultipart20100426-1152-12dn5rn-0>}} 
    [4;36;1mUser Load (0.0ms)[0m [0;1mArgumentError: redundant UTF-8 sequence: SELECT * FROM `users` WHERE (`users`.`id` = 1) LIMIT 1[0m 

ActiveRecord::StatementInvalid (ArgumentError: redundant UTF-8 sequence: SELECT * FROM `users` WHERE (`users`.`id` = 1) LIMIT 1): 
lib/authenticated_system.rb:109:in `login_from_session' 
lib/authenticated_system.rb:12:in `current_user' 
app/controllers/application_controller.rb:296:in `setup_page_titles' 
lib/redis_db_logging.rb:18:in `enable_redis_logging' 
lib/redis_logger.rb:43:in `redisize' 
lib/redis_logger.rb:42:in `redisize' 
lib/redis_db_logging.rb:11:in `enable_redis_logging' 
haml (2.2.2) lib/sass/plugin/rails.rb:19:in `process_without_compass' 
/home/crashpaddernew/.gem/ruby/1.8/gems/chriseppstein-compass-0.8.8/lib/compass/app_integration/rails/action_controller.rb:7:in `process' 
/dh/passenger/lib/phusion_passenger/rack/request_handler.rb:91:in `process_request' 
/dh/passenger/lib/phusion_passenger/abstract_request_handler.rb:206:in `main_loop' 
/dh/passenger/lib/phusion_passenger/railz/application_spawner.rb:376:in `start_request_handler' 
/dh/passenger/lib/phusion_passenger/railz/application_spawner.rb:334:in `handle_spawn_application' 
/dh/passenger/lib/phusion_passenger/utils.rb:182:in `safe_fork' 
/dh/passenger/lib/phusion_passenger/railz/application_spawner.rb:332:in `handle_spawn_application' 
/dh/passenger/lib/phusion_passenger/abstract_server.rb:351:in `__send__' 
/dh/passenger/lib/phusion_passenger/abstract_server.rb:351:in `main_loop' 
/dh/passenger/lib/phusion_passenger/abstract_server.rb:195:in `start_synchronously' 
/dh/passenger/lib/phusion_passenger/abstract_server.rb:162:in `start' 
/dh/passenger/lib/phusion_passenger/railz/application_spawner.rb:213:in `start' 
/dh/passenger/lib/phusion_passenger/spawn_manager.rb:261:in `spawn_rails_application' 

사람은 '중복 UTF-8 시퀀스'오류가 무엇인지 알고 있나요, 왜 요청이에서 오는 : SQL라는 첫 번째 오류를 가져옵니다 단지가 될 것으로 보인다 중요하지 않습니다 플래시 업 로더가 원인입니까? 아니면 어떻게 든 JSON에 문제가 있습니까?

답변

4

다른 사람이 미친 듯이 "중복 UTF-8 시퀀스"를 검색하는 경우 (Excel 문서를 Rails 응용 프로그램에 업로드하려고 시도했을 가능성이 있음) 나에게 약간의 헤어 라인을 저장해 둡니다.

A fix has been implemented in the 3-2-stable branch of rails 그러나 아직 공개되지 않았습니다. 자신의 응용 프로그램에이 선 (善)을 얻기 위해서는, 단순히이 파일 작성 :

module ActiveSupport::JSON::Encoding 
    def self.escape(string) 
    if string.respond_to?(:force_encoding) 
     string = string.encode(::Encoding::UTF_8, :undef => :replace).force_encoding(::Encoding::BINARY) 
    end 
    json = string.gsub(escape_regex) { |s| ESCAPED_CHARS[s] } 
    json = %("#{json}") 
    json.force_encoding(::Encoding::UTF_8) if json.respond_to?(:force_encoding) 
    json 
    end 
end 

을 ... 그리고 require해야합니다. 그 후에 가야한다.

+1

에 복귀한다. –