【发布时间】:2012-02-28 08:41:35
【问题描述】:
在 Rails 3.2 应用程序(Ruby 1.9.2)中,我收到以下错误
mobile_users#update 中发生 PGError:
不完整的多字节字符
这些是 Postgres 错误,但我在开发和测试模式下测试时遇到类似的 SQLIte 错误
导致此错误的参数是(故意省略了身份验证令牌)
* 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 的字符集,但我不知道如何执行此操作。
对于"name"=>"p\xEDa ",我还在 UTF-8 中得到无效的字节序列
【问题讨论】:
标签: ruby-on-rails ruby encoding utf-8