Stack Map新人 Web エンジニアの地図

文字化けは、書いた時と読んだ時で、文字コードの決まりが違うと起きます。CSV と Excel は、その事故がいちばん起きやすい場所です。
道具の欄は、このブラウザの中で本当にバイトを作って読んでいるので、自分の文字でも試せます。考え方のヒント の印は、出典のない考え方や、練習のための作り物です。

文字化けはなぜ起きるか

文字は、決まり(文字コード)にしたがってバイトにして保存します。読む側が別の決まりで読むと、違う文字になります。文字数の数え方などのつまずきはつまずきやすい点「文字」にあります。

文字化けを起こしてみる

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 を出す・受け取る機能を作ったら、確かめたものにチェックを付けてください(この端末にだけ保存されます)。考え方のヒント