文字化けはなぜ起きるか
文字は、決まり(文字コード)にしたがってバイトにして保存します。読む側が別の決まりで読むと、違う文字になります。文字数の数え方などのつまずきはつまずきやすい点「文字」にあります。
文字化けを起こしてみる
Unicode と UTF-8、Shift_JIS と CP932
今の基本は UTF-8 です。古いシステムや、Windows の Excel とのやりとりでは、Shift_JIS(とくに Windows の CP932)にも出会います。
同じ文字の、文字コードごとのバイト
BOM(先頭の見えない目印)
UTF-8 のファイルの先頭に付くことがある 3 バイトです。Excel には効きますが、困る場所もあります。
BOM のあり・なしで、読む側を比べる
CSV の決まり(RFC 4180)
カンマで区切るだけ、に見えて、カンマ・ダブルクォート(")・改行を含む値で崩れます。決まりは 7 つです。
書く・読む練習 値を書きかえると、CSV の 1 行が変わります
どう書く?
Excel で開くと起きること
CSV そのものは正しくても、Excel が開くときに文字や値を変えることがあります。勤怠の締めの CSV を、Excel で確かめる人がいるときは、とくに大事です。
化ける・化けないの判定
PHP と Laravel で CSV を書き出す・読み込む
勤怠の月の締めの CSV(日付・氏名・出勤・退勤)を出す例と、受け取った CSV を読む例です(どちらも作り物)。コードは PHP 8.4 で動かして確かめました。
気をつける文字
見た目は同じ、または似ているのに、中身が違う文字があります。道具に文字を入れると、1 文字ずつ番号とバイトが見えます。
1 文字ずつ見る
AI 時代AI と文字コード
文字化けは、AI に聞くと早く片づくことがあります。そのとき、何を渡し、何を渡さないかが大事です。
チェックリスト
CSV を出す・受け取る機能を作ったら、確かめたものにチェックを付けてください(この端末にだけ保存されます)。考え方のヒント