incompatible character encodings: UTF-8 and ASCII-8BIT
By admin
有一个页面,上传csv并解析后存如数据库,如果解析格式错误则render之前的页面提示错误。
有个问题,上传文件中的字符出错后,如果该字符中包含非ascii字符页面就会报错
incompatible character encodings: UTF-8 and ASCII-8BIT
网上说了好多都说数据库连接方面的修改。我这个是直接解析上传文件,还没有涉及到数据库连接上,整个程序都是utf-8编码,config.encoding也已经设置。
后来参考http://www.cnblogs.com/kting/archive/2011/09/15/2177530.html
后来发现问题出在上传文件的读入上
params[:upload_file].read.encoding
返回的字符串的encoding是 ASCII-8BIT
在这里用params[:upload_file].read.force_encoding(“utf-8”)
之后就正常了。
其间还测试了Iconv.iconv方法,不过不灵,还试了String#toutf8方法,结果字符串变成了空白的,不清楚这个方法是干什么的。