В приложении Rails 3.2 (Ruby 1.9.2) я получаю следующие ошибки
Произошла ошибка PGE в обновлении mobile_users #:
неполный многобайтовый символ
Это ошибки Postgres, но я получаю похожую ошибку SQLIte при тестировании в dev и режимах тестирования
Параметры, вызывающие эту ошибку (токен намеренно опущен)
* Parameters: {"mobile_user"=>{"quiz_id"=>"1", "auth"=>"xxx", "name"=>"Joaqu\xEDn"}, "action"=>"update", "controller"=>"mobile_users", "id"=>"1", "format"=>"mobile"}
Это приходит как запрос JSON HTTP Put, и действие обновления, имеющее к этому отношение, выглядит следующим образом
# PUT /mobile_users/1
# PUT /mobile_users/1.xml
def update
@mobile_user = current_mobile_user
@mobile_user.attributes = params[:mobile_user]
respond_to do |format|
if @mobile_user.save
format.html { redirect_to(@mobile_user, :notice => 'Mobile user was successfully updated.') }
format.json { head :ok }
format.mobile { head :ok }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.json { render :json => @mobile_user.errors, :status => :unprocessable_entity }
format.mobile { render :json => @mobile_user.errors, :status => :unprocessable_entity }
format.xml { render :xml => @mobile_user.errors, :status => :unprocessable_entity }
end
end
end
В приведенных выше параметрах указана строка, которая нарушает правила: "Joaqu \ xEDn", что вполне допустимо.
дело в том, что мне нужно обрабатывать все наборы символов на любом языке.
Полагаю, мне нужно было бы использовать библиотеку iconv, но для этого мне нужно было бы определить набор символов для преобразования в UTF8, и я понятия не имею, как это сделать.
Я также получаю недопустимую последовательность байтов в UTF-8 для "name"=>"p\xEDa "