※ ChatGPTを利用し、要約された質問です(原文:csvからDBへのデータ取り込みの際の文字化けにつきまして)
csvからDBへのデータ取り込みの際の文字化けについて
このQ&Aのポイント
csvからDBへのデータ取り込みを行う際に文字化けが発生しています。
ローカルに保存されたcsvデータをファイルアップロードフォームからアップロードし、phpの関数を使って読み込み、mysqlにデータを取り込んでいます。
しかし、文字化けが解消されません。エンコーディングの処理や調査を行ったものの解決策が見つかりませんでした。具体的な対処法について助言をいただけないでしょうか。
csvからDBへのデータ取り込みの際の文字化けにつきまして
現在、csvでローカルに保存してあるデータを
ファイルアップロードフォームからアップロードし、
phpでfgetsを利用した関数を使いながら読み込み、
insertやupdate文を使って
各データをmysql(sjis)に読み込んでいます。
しかし、文字化けがどうしてもなおりません。
例えば、
代表が⇒代浮ェ
三十九歳⇒三暑纃ホ
六十六年⇒六序Z年
暴落に⇒沫獅ノ
のような感じです。(左がローカルcsv、右がmysqlに取り込み後)
もともとはfgetcsvを使っていたんですが、
上と同様の(代表が⇒代浮ェ、みたいな)文字化けしてしまい、
色々調べたところやはり日本語で使うと文字化けしやすいとのことだったんで、
fgetsを使った関数になおしましたが、直りません。
(ここにあったものを使わせていただきました⇒http://yossy.iimp.jp/wp/index.php?s=fgetcsv)
エンコーディングの処理まわりの問題かと思い、
色々調べ、試してみましたが、取り込み時の文字化けは直りませんでした。
(例えば、
$data = mb_convert_encoding($data, "SJIS")
をしてみたり、
mb_language("Japanese");
mb_internal_encoding ("SJIS");
mb_http_input("auto");
mb_http_output("SJIS");
mb_detect_order("auto");
mb_substitute_character("none");
ob_start("mb_output_handler");
header("Content-Type: text/html; charset=shift_jis");
を最初のほうに入れたり。)
調べているうちにエンコーディングと文字化けの仕組みも
(例えば、特定の連続する文字列がある文字に化ける理由など)
分かったんですが、具体的な対処法については、
私の力では手詰まりになってしまいました。
初歩的な質問で恐れ入りますが、
よろしければ具体的な対処法について助言頂ければ幸いでございます。
よろしくお願いいたします。
お礼
わざわざのご助言ありがとうございました。 大変助かりました。