アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在、画面がSJISで作成されており、スクリプトはUTF-8で作成されています。
画面から来るデータを全て自動的にUTF-8に変換し、スクリプト上で処理し、
最後に自動的にSJISに変換し直して画面へ出力しています。

しかし、半角カナだけの文字列が画面から渡ってきた場合、
文字エンコーディングした瞬間、化けます。
全角文字を含んでいれば問題ないのですが・・・。
化けてしまう為、スクリプト内で既に支障を来たしてしまいます。

これをどうにか解消させる方法はありませんでしょうか?
以下、決定事項の為、変更する事は出来ません。
 ・画面はSJISで出力、テンプレートファイルもSJISで記述
 ・スクリプトはUTF-8で記述
 ・根本的なエンコーディング処理
  (受け取った値に対して、以下の処理を走らす。
  mb_language("japanese");
  mb_convert_encoding("UTF-8", "auto");
  画面へ出力する際に、以下の処理を走らす。
  mb_language("japanese");
  mb_convert_encoding("SJIS", "auto");としている)
 ・画面から受け取る文字列は何でも受け取る

どなたかご教示下さい。

A 回答 (1件)

sjisの半角カナをautoで判定しているためEUC-JPと誤判定されているのでしょう


自動判定は使わないほうがいいです
mb_convert_encoding($str, "UTF-8", "sjis-win");
でいいのでは
    • good
    • 0
この回答へのお礼

ありがとうございます。きっと仰るとおりなんだと思います。
自動判別する所で文字コードの問題が発生してしまうとは・・・。
自動判別出来る=自動判別なら文字コードのバッティングを意識
しなくていいと思っていたのですが。

mb_check_encoding()で対応できるみたいでした。

mb_check_encoding()で対応出来なかった場合、幸いにも質問に
あるパターンは決まった動作をされた時のみ発生するので、
文字コードエンコーディングを行っている関数に変換元文字
コードでも引数に追加して、渡ってきたらその文字コードで
変換するように対応してみます。
(そっちの方がスマートかつ確実なので、最初からそっちで対応するかも・・・)

お礼日時:2007/08/22 23:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!