
現在、画面が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");としている)
・画面から受け取る文字列は何でも受け取る
どなたかご教示下さい。
No.1ベストアンサー
- 回答日時:
sjisの半角カナをautoで判定しているためEUC-JPと誤判定されているのでしょう
自動判定は使わないほうがいいです
mb_convert_encoding($str, "UTF-8", "sjis-win");
でいいのでは
ありがとうございます。きっと仰るとおりなんだと思います。
自動判別する所で文字コードの問題が発生してしまうとは・・・。
自動判別出来る=自動判別なら文字コードのバッティングを意識
しなくていいと思っていたのですが。
mb_check_encoding()で対応できるみたいでした。
mb_check_encoding()で対応出来なかった場合、幸いにも質問に
あるパターンは決まった動作をされた時のみ発生するので、
文字コードエンコーディングを行っている関数に変換元文字
コードでも引数に追加して、渡ってきたらその文字コードで
変換するように対応してみます。
(そっちの方がスマートかつ確実なので、最初からそっちで対応するかも・・・)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字化け変換方法
-
メールのCCに複数のアドレスを...
-
PostgreSQLからCSV形式でエクス...
-
phpフォームで携帯へメール送信...
-
PHPでの文字列置換について
-
postの文字化け防止について
-
VBAのコマンドボタンの文字列の...
-
メッセージボックスで1025文字...
-
Excel関数「COUNTIF」で”文字”...
-
文字の入力で横バー上段、中断...
-
コンボボックスの項目中に改行を
-
ExcelVBAでメールを作成してメ...
-
エクセルのCOUNTIFが正しくカウ...
-
エディットボックスで改行
-
ソースコードの1行が長いとき...
-
COBOLの改行
-
VBAでCSVをExcelに取り込む時に...
-
【VBA】エクセルで最後の不要な...
-
ファイルから読み取った改行文...
-
エクセルでの漢字、カタカナ、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字化け変換方法
-
PHPmailerでの添付ファイルの文...
-
PHP cURLでPOSTした値が文字化...
-
SQL Serverで文字コードUTF-8
-
日本語(マルチバイト)でのwor...
-
imodeメールのSubject部分の文...
-
「テキストテキスト」という文...
-
mb_eregについて
-
SJISからUTFに変換して...
-
SJISで取得した半角カナをUTF-8...
-
PostgreSQLからCSV形式でエクス...
-
PHPの文字化けについて教え...
-
PHPでのメール差出人名について
-
【PHP】日本語を実体参照符号化...
-
Shift-JISからUTF-8への変換が...
-
phpフォームで携帯へメール送信...
-
txtファイル作成の際に文字コー...
-
vodafoneが言う事ききません
-
文字コードを変換したURLを作成...
-
PHP + SQLite 文字化けについて
おすすめ情報