質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

1回答

2420閲覧

rails4のCSVダウンロード機能における文字化けを解消したい

janbooo

総合スコア8

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2016/02/24 07:27

<rails4のCSVダウンロード機能における文字化け>
以下のサイトの情報をもとに文字化けを解消しようとしているのですが解決できません。
現在のコードは下記のとおりです。
どのファイルにどんなコードを書くべきでしょうか。

【①users_controller.rb】
def download
@users = User.all
respond_to do |format|
format.csv do
send_csv render_to_string, filename: "user.csv", type: :csv
end
end
end

【②index.csv.ruby】
require 'csv'
CSV.generate do |csv|
csv_column_names = %w(id, last_name, first_name, email, created_at, updated_at )
csv << csv_column_names
@users.each do |user|
csv_column_values = [user.id,
user.last_name,
user.first_name,
user.email,
user.created_at,
user.updated_at
]
csv << csv_column_values
end
end

【③index.html.erb】
<%= link_to "CSV出力", users_path(format: :csv) %>

http://www.ohmyenter.com/%E3%80%90%E5%AE%9F%E8%B7%B5%E3%80%91rails%E3%81%AB%E3%81%A6%E6%A4%9C%E7%B4%A2%E7%B5%90%E6%9E%9C%E3%82%92%E3%81%9D%E3%81%AE%E3%81%BE%E3%81%BEcsv%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B%EF%BC%88%E3%82%84/

http://qiita.com/shunsuke227ono/items/a9648f8c043ed637dc69

http://k-shogo.github.io/article/2013/11/05/rails-csv-download/

http://tech-mr-myself.hatenablog.com/entry/2013/11/14/195346

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

文字化けは、本質的にはcsvを利用する側の問題です。すなわち、提供する側が意図した文字コードのcsvに、利用する側が対応できない、ということになります。
なので、利用する側が対応できるようなcsvを提供側が出力したいとするならば、まず、どの文字コードで出力したいのかを明確にしないと問題を解決しようがありません。

たとえば、

ruby

1# coding: utf-8 2CSV.generate do |csv|3result = CSV.generate do |csv| に変更 4 5最後のendの後に 6result.encode(Encoding::SJIS, :invalid => :replace, :undef => :replace)を挿入

としたとしても
0. コードがUTF-8で書かれていて
0. 何もしなければ、CSVがUTF-8で出力されるところを
0. (変換ミスを無視して)SJISに変換して出力している

だけなので、本質的な解決につながるのかどうか。なので、まずは

  • 出力側の現状の文字コード
  • 利用側の文字コード
  • 個別の文字化けの問題(変換ミスの文字)

を切り分けてみましょう。

投稿2016/02/26 02:18

NCC1701

総合スコア1680

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問