• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SJISで取得した半角カナをUTF-8に変換する方法)

SJISで取得した半角カナをUTF-8に変換する方法

このQ&Aのポイント
  • 画面がSJISで作成されており、スクリプトはUTF-8で作成されています。画面から来るデータを全て自動的にUTF-8に変換し、スクリプト上で処理し、最後に自動的にSJISに変換し直して画面へ出力しています。
  • 半角カナだけの文字列が画面から渡ってきた場合、文字エンコーディングした瞬間、化けます。全角文字を含んでいれば問題ないのですが、スクリプト内で既に支障を来たしてしまいます。
  • 画面はSJISで出力し、テンプレートファイルもSJISで記述する一方、スクリプトはUTF-8で記述されています。受け取った値に対してエンコーディング処理を行い、画面へ出力する際にもエンコーディング処理を行っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

sjisの半角カナをautoで判定しているためEUC-JPと誤判定されているのでしょう 自動判定は使わないほうがいいです mb_convert_encoding($str, "UTF-8", "sjis-win"); でいいのでは

naktak
質問者

お礼

ありがとうございます。きっと仰るとおりなんだと思います。 自動判別する所で文字コードの問題が発生してしまうとは・・・。 自動判別出来る=自動判別なら文字コードのバッティングを意識 しなくていいと思っていたのですが。 mb_check_encoding()で対応できるみたいでした。 mb_check_encoding()で対応出来なかった場合、幸いにも質問に あるパターンは決まった動作をされた時のみ発生するので、 文字コードエンコーディングを行っている関数に変換元文字 コードでも引数に追加して、渡ってきたらその文字コードで 変換するように対応してみます。 (そっちの方がスマートかつ確実なので、最初からそっちで対応するかも・・・)

関連するQ&A