PHPの開発で文字化けしたら大抵この問題!

WEB開発をしているとよく文字化けに遭遇します(笑)

文字化けって地味にうざったいんですよね。

とは言ってもちゃんと注意していれば大抵の場合は大丈夫です。

文字化けの原因

この文字化けの原因は、文字コードのずれです。

“あ”という文字を扱うにしても、Shift-JISとUTF-8では内部のコードの持ち方が違います。

具体的には僕も知らないですが、イメージだとShift-JISの”あ”は「1001100100010001」なのに対して、UTF-8の”あ”は「0111000100110011」だったりします。

 

データを保存するとき何MBとか何GBとかいいますね?

Bはバイトのことで、1バイトは8ビットです。

1ビットは0か1で表現するので、2バイト文字だったら上のイメージのように0か1が16個並ぶんです。

そして文字コードの種類によってどの並び方がどの文字になるかは異なってきます。

 

PHPに限らず開発する場合はPHPファイルや設定ファイル、データベースなどデータを保持したり定義するファイルが色々あります。

これらの文字コードが異なってしまうことが主な原因になります。

文字化けの対策

PHPファイルや設定ファイル、データベースなどを作成するときの文字コードを全て一致させておけば文字化けはほぼありません。

うっかり文字コードが異なると文字化けしてしまいます。

自分1人で作る場合や少人数のチームの場合は文字コードは予め何にするか相談してプログラミングを開始したらいいと思います。

 

ただ、大規模なシステムや外部のシステムとの連携がある場合には、その外部のシステムの文字コードまではこちらでは定義できないのでテストして文字化けするなら文字コードを変換する必要があります。

PHPで文字コードを変換するには mb_convert_encoding() という関数があります。

これで自分のシステムの文字コードに変換して対策しましょう。

まとめ

文字コードの問題はそれほど解決が難しくはないが、システム開発に慣れていないと何故文字化けしてるか分からなかったりします。

そんなときはまずPHPファイルやデータベースなどの文字コードを確認します。

それでも文字化けするようでしたら、その文字がどこで定義されたものかを追っていって、外部システムなど触れない部分の場合は取得した時点で文字コードを変換します。

これで大抵はOKだと思います。

コロナの影響でみんな大変だから俺もなんかできること

僕は福井県に住んでいるのですが、戦時中に福井大空襲にあい、その直後に大震災にあってボロボロになった話をおばあちゃんに聞きました。

それでも復活することができ、不死鳥の町と言われるようになりました。

先人達には心から感謝し尊敬します。

リーマンショック、東日本大震災、コロナと数十年に一度と言われる被害が立て続けに起きていますが、僕たちは強いです。

今は苦しいかもしれませんがきっと復活できます。

僕は低学歴ですし小さな小さな粒でしかないですが、プログラミングに関しては必死に勉強し15年以上ごはんにありつけています。

プログラミングを勉強している人の役に立てるほどのスキルはあると思っています。

なので1人でもんもんと悩んでいる若手のエンジニア向けに質問を受け付けることにします。

自宅で待機されている間もパソコンとインターネットがあればプログラミングの勉強はできます。

  • PHP
  • SQL
  • HTML・CSS
  • jQuery

とは言ってもいきなり答えを聞いていたのではなかなか成長できないと思うのです。

なので質問の際には次のことをご連携ください。

  • 何をやりたいか
  • どんなことを調べたか、検索キーワードと参考にしたページのURL
  • 調べた結果どこが分からないか
  • できるなら試したコード

メッセージいはとりあえずTwitterにでもください。

質問はこちら

すぐに返事できないかもしれませんがご了承ください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA