• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Shift-JISの文字と改行コードについて)

Shift-JISの文字と改行コードについて

このQ&Aのポイント
  • TEXTAREAで入力した値をDBに保存する際に、Shift-JISの文字化けコード(「ソ」「表」)が入っている場合に改行部に「 」が文字として保存される問題が発生します。
  • また、文字化けコードがない場合には「 」は表示されず、文字化けコードと改行までの間に半角英数字が入っていると「 」は表示されません。
  • この問題を回避する方法として、文字化けコードが入っている場合には改行前に文字化けコードを置換するなどの処理が必要です。

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

ふぇぇ、PHPのこれってまだ直ってなかったんだ。 たとえば、 $keikaku = "計画表\r作成中"; という風に「変数の中の」文字列があった時に、PHPはなんとこれをエスケープ展開してしまうんだ。  (PHPが構文の元ネタにした)オリジナルのC言語では、「"計画表"と0x0aと"作成中"」になる(処理系による)。当然だよね。だが、スクリプト言語であるPHPは、"表"の後ろ1バイトが0x5c, '\'であるので、"計画?\\r作成中"と解釈されるんだ。"\\"はPHPでは「半角円マーク一つ」と処理されるので、"計画?\\r作成中"→「計画?\r作成中」という表示になるわけだ。  根本的な解決策は、ShiftJISを使わない事だが、場当たり的な対処法は色々あるので「PHP ShiftJIS 表 ソ」で検索して、気に入った方法を使えば良いのではないかな。

getamato
質問者

お礼

遅くなりました。 解決はしていませんが、何が原因でどうしてなのか、 理解が少しずつできました ありがとうございます。

関連するQ&A