- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Shift-JISの文字と改行コードについて)
Shift-JISの文字と改行コードについて
このQ&Aのポイント
- TEXTAREAで入力した値をDBに保存する際に、Shift-JISの文字化けコード(「ソ」「表」)が入っている場合に改行部に「 」が文字として保存される問題が発生します。
- また、文字化けコードがない場合には「 」は表示されず、文字化けコードと改行までの間に半角英数字が入っていると「 」は表示されません。
- この問題を回避する方法として、文字化けコードが入っている場合には改行前に文字化けコードを置換するなどの処理が必要です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ふぇぇ、PHPのこれってまだ直ってなかったんだ。 たとえば、 $keikaku = "計画表\r作成中"; という風に「変数の中の」文字列があった時に、PHPはなんとこれをエスケープ展開してしまうんだ。 (PHPが構文の元ネタにした)オリジナルのC言語では、「"計画表"と0x0aと"作成中"」になる(処理系による)。当然だよね。だが、スクリプト言語であるPHPは、"表"の後ろ1バイトが0x5c, '\'であるので、"計画?\\r作成中"と解釈されるんだ。"\\"はPHPでは「半角円マーク一つ」と処理されるので、"計画?\\r作成中"→「計画?\r作成中」という表示になるわけだ。 根本的な解決策は、ShiftJISを使わない事だが、場当たり的な対処法は色々あるので「PHP ShiftJIS 表 ソ」で検索して、気に入った方法を使えば良いのではないかな。
お礼
遅くなりました。 解決はしていませんが、何が原因でどうしてなのか、 理解が少しずつできました ありがとうございます。