use*_*363 9 csv ruby-on-rails ruby-on-rails-4
在Rails 4.2应用程序中导出csv时,csv输出中有ascii代码用于中文字符(UTF8):
ä¸åˆåŒç†Šå·¥ç‰ç”¨é¤
Run Code Online (Sandbox Code Playgroud)
我们send_data没有运气就尝试了选项:
send_data @payment_requests.to_csv, :type => 'text/csv; charset=utf-8; header=present'
Run Code Online (Sandbox Code Playgroud)
和:
send_data @payment_requests.to_csv.force_encoding("UTF-8")
Run Code Online (Sandbox Code Playgroud)
在模型中,有强制编码utf8:
# encoding: utf-8
Run Code Online (Sandbox Code Playgroud)
但它不起作用.有在线帖子谈论使用gem iconv.但是iconv取决于平台的ruby版本.是否有更清洁的解决方案来修复Rails 4.2 csv导出中的ascii?
如果@payment_requests.to_csv包含ASCII文本,那么你应该使用encode方法:
@payment_requests.to_csv.encode("UTF-8")
Run Code Online (Sandbox Code Playgroud)
要么
@payment_requests.to_csv.force_encoding("ASCII").encode("UTF-8")
Run Code Online (Sandbox Code Playgroud)
取决于哪种内部编码@payment_requests.to_csv.
小智 1
你可以试试:
@payment_requests.to_csv.force_encoding("ISO-8859-1")
Run Code Online (Sandbox Code Playgroud)