※ ChatGPTを利用し、要約された質問です(原文:データの文字化けについて)
データの文字化けに関する問題
このQ&Aのポイント
Web上にCSVファイルを置いてPHPで作ったサイトからデータを入力する際に、文字化けが起きてしまう問題が発生しています。
特に、入力後に¥マーク(半角のえんマーク)が入るようになり、データを編集し保存するたびに¥マークの数が増えていく現象が起きています。
この現象の原因は、SHIFT-JISのCSVデータをUTF-8で表示させるために行ったmb_convert_variablesというPHPの記述にある可能性があります。
Web上にCSVファイルを置いてPHPで作ったサイトからデータを入力しています。
いつからか、入力後に¥マーク(半角のえんマーク)が入るようになってしまいました。
場所は
<a href="アドレス" target="_blank">テスト</a>
だとすると
<a href=\"アドレス\" target=\"_blank\">テスト</a>
のように「 " 」の右隣に入ります。
そのデータを開いて編集し保存をするたびに¥マークの数が増えていく感じです。
また、特定の文字でも同じ現象がおこるようで
例えば「ソニー」と入力して保存すると
「ソ\ニー」となります。
原因として思い当たるのが
SHIFT-JISのCSVデータを、どうにかしてUFT-8でWebに表示させるために
<?php echo $*********[0][0]; ?>
という記述を
<?php mb_convert_variables("UTF-8","SJIS",$*********); echo $*********[0][0]; ?>
とPHPのファイルをいじった時期に重なります。
私自身、PHPは全く解らず
自力でネット検索し対応したためmb_convert_variablesというのが
どういうことをするモノなのか解りません。
文字化け表示を直すためにmb_convert_variablesを使いましたが
これはデータベースの中身を書き換えてしまうのでしょうか?
今回の現象はmb_convert_variablesが原因でしょうか?
それとも、他に原因がありますでしょうか?
現在、応急処置として
<a href=アドレス target=_blank>テスト</a>と
「 " 」を使わない方法で対応していますが
「ソ\ニー」のように特定の文字に関しては対応方法もなく困っております。
よろしくお願いいたします。
お礼
ありがとうございます。 教えていただいた方法で円マークが消えました。 助かりました。 何度か再編集と保存を繰り返したデータには保存した回数分の大量の円マークが発生していて、そのデータに関しては円マークが表示されましたが、そこは手動で消すことで円マークを1つに減らすことができ(どうしても保存時に1つは入っちゃうんですよね)Web表示上は円マークが消えました。 私も最初に検索した時は mb_convert_encoding() をみつけたのですが 書き込んでみたところ上手くいかず なぜかmb_convert_variables() でUTF-8化が上手くいきました。 多分、mb_convert_encoding() の記述や使い方等を間違ったのだとは思いますが、PHPは全く素人で、どこが間違っているのか解りませんでした。 今回のPHPも知人に作ってもらったもので、その知人も原因が解らず困っていたところ、今回のアドバイスをいただき、大変助かりました。 本当にありがとうございました。