データは、そのまま保存されず、規則に従って変換して保存されるため、異なる規則を用いる環境では、正しく復元されません。ここでは、そのしくみを簡単に説明します。
文字コードと文字化け、変換のしくみ
データの保存
例として「あいう」という文字列を保存します。
「あいう」は、そのままの文字列「あいう」とは保存されません。
保存する際に「あ」「い」「う」のぞれぞれの文字を、変換表に従って「A01」「B01」「C01」というデータに変換して保存します。
この変換表を文字コードといいます。
データを開く
「あいう」を保存したデータを別の環境で開くと、正しく復元されません。
これは、それぞれの環境で使用している文字コードが異なるためです。
この例では、「あ」「い」「う」は、文字コードAにより「A01」「B01」「C01」に変換して保存されています。
しかし、文字コードBの環境で読み込むと、「A01」は「!」、「B01」は「”」、「C01」は「#」になります。
文字コードの変換
正しい文字コードに変換してからデータを読み込むと、正しく「あいう」を表示することができます。
この例では、文字コードAで A01 は、文字コードBでは A97、同 B01 は A98、 同 C01 は A99 に対応します。
この結果、文字コードを変換することで、文字コードBの環境でも元のデータを正しく表示することができます。
参考
複数の環境で使用する場合
文字コードをAからBに変換したことで、文字コードBの環境で正しく表示することができるようになりましたが、今度は文字コードAの環境では、同様に文字化けすることになります。
よって、変換したデータを最初の環境で開くと、やはり文字コードが異なるため、正しく表示されません。
単一の環境で使用する場合は特に問題になることはありませんが、複数の環境でデータをやり取りする場合は、あらかじめ共通して使用する文字コードを決めておくと、トラブルなく保存したり読み込んだりできます。
ソフトウェアによる自動判別
多くのソフトウェアでは、文字コードを自動的に判別して正しく表示する機能が搭載されていますので、普段はあまり気にすることなく作業を行うこともできます。
様々な変換
文字コードはとても多く存在し、用途によっても異なります。
広義の意味では、ホームページ、電子メール、画像、動画、データベースなど、あらゆるデータは文字コードのような変換表に基づいて保存され、読み出されています。保存をエンコード、読み出しをデコードと表現することもあります。
変換と暗号化
データの保存や読み出しに共通の変換表が必要なことから、暗号のように見えるかもしれませんが、暗号化や復号化とは異なります。
文字コード以外にも注意
// 環境Aで保存 ここは1行目です。 ここは2行目です。 ここは3行目です。
文字は正しく表示されていても、「行」が正しく表示されない場合もあります。
// 環境Bで読込 ここは1行目です。ここは2行目です。ここは3行目です。
これは文字コードではなく、「改行コード」の違いによるものです。
文字が正しく表示されていても、この状態で保存すると、データは壊れてしまいます。データには、文字列のように目に見えるデータと、改行位置をあらわすための目に見えないデータなどが保存されており、編集することにより目に見えないデータが不具合を起こしてしまいます。
なお、何も編集せずに保存した場合や改行に触れない文字列中の1文字を変更しただけでも壊れてしまいます。データの保存は、変更された場所のみデータを書き換えるわけではなく、全体を処理して保存するため、変換ルールによって目に見えないデータも書き換えられるためです。
関連
Windows の標準機能を使用して文字コードを変換する方法については、次のサポート記事をご参照ください:
注意
- かんたんに説明しているため、詳細は実際と異なります
- 本記事では、かんたんに説明するため、文字化けする原因のひとつである文字コードについて記載していますが、実際の文字化けは様々な要因によって発生します
スポンサードリンク