[Rails] 入力フォームの値でソフトバンクだけ文字化ける
移転しました。
以下のような項目で値を入力
名字 [ほげ] 名前 [てす] [Submit]
そしてSubmitするとソフトバンクの携帯だけ以下のように文字化けた。
名字 [ほげ] 蜷前 [てす] ← ここ!!
調査すると、ソフトバンクの場合だけ、Railsコントローラーにわたってくるパラーメタの値が、utf8でなくなんか文字化けてた。
なので、以下のような処理をかましてやり、utf8に変換して最後response出力時に、sjisに変換してやればオK
class HogeController < ApplicationController after_filter :to_sjis : : def confirm # ソフトバンク対応。フォームの入力値が化けるため、 # 全てutf8に変換してから処理する rtn_attrs = [] params[:hoge].each do |attr| # attr[1] = attr[1].toutf8 if !attr[1].blank? # toutf8だと携帯の半角カナが文字化けするので kconvでちゃんと指定 attr[1] = attr[1].kconv(Kconv::UTF8, Kconv::SJIS) if !attr[1].blank? rtn_attrs.push(attr) end @hoge = Hoge.new(Hash[*rtn_attrs.flatten]) : : end private def to_sjis headers["Content-Type"] = "text/html; charset=Shift_JIS" response.body = response.body.tosjis end