最近取り組んだ問題として、Webサイトの文字化け問題というものがありまして。
Webページデザインのマイナーチェンジをするべく、(10年~5年ほど前に作成された)古いのhtmlファイルの一部を変更した時のことなのですが。
はーい、できましたっ!と、サーバーにアップしてみると・・・
な、なんと、日本語部分が全て意味不明な記号に化けておりました(涙
すっかりうろたえまくった管理人、Web上にある親切なエンジニアの方々(知らない人ですが💦)のブログなどを漁った結果、なんとか解決はしたのですが、
思ったのですよ。文字コードについてなにも知らなかったなと
会社員時代も時々悩まされていたこちらの問題。
相手先さんからメール添付などでファイルをいただいた時に、
どうしようもなく文字が化けていたりすることがあって、
悲しい思いをしたこともありましたが、その原因解明に時間を費やすわけにもいかず、
よくわかっていない状態でファイルを開くアプリの設定などをちょっとだけさわってみて、結局、
「読めないファイルなんで送り直してくださいー」、などという顛末になったりすることがほとんどで、
なんとなくめんどくさいことになった系の思い出となってしまっているのですが・・・
今なら心置きなく取り組めますっ☆
とうことで、調べてみたら、またまたとてつもなく奥の深い話が広がっていたのでした。
まあ、深いところは専門の方々に取り組んでいただくとして、一般的な感じでは、こういうことのようです。
まずは前置きから。
パソコンの仕組みとして、最終的には、”1″と”0″ (信号が”有る”か、さもなければ”無い”・・・ 笑 ) ですべてを表現するものの、
どういう風にそのシンプルな命令にたどり着くかまでの経緯は、ほんっっ・・・とうに多彩で。
文字を表すということに関しても、その時々のいろんな事情に合わせてその意味付けとか変換の方法のようなものが、進化するにつれ生まれていくわけなのですよね。
と、たっぷり前置きしまして・・・
文字コードとは:
文字コードとは、文字や記号をコンピュータ上でデータとして扱うために、一文字ずつ固有の識別番号を与えて区別できるようにした符号のこと。
IT用語辞典 e-Words 「文字コード 【character code】 キャラクターコード」より
https://e-words.jp/w/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89.html
うーん。まあ、日本語含む各国の言葉や記号一つ一つに、「あ」には「3042」を当てよう、等、固有の数値(16進数なので、9より大きい値を表すために、A~Fも数値の仲間として登場!)を割り当てているというわけなのですね。
それぞれ数字を割り当てるこの”文字コード”は、2種類に区別して扱われることも。
「符号化文字集合体」
文字に、コードポイントという符号を対応させたものの集合体で、
Unicodeや、JIS X 0208 などがある。
世界中の文字が網羅されている”Unicode”。以前から、なにかでお見掛けしたこともありましたっけ。
「文字符号化方式」
↑↑上記の符号化文字集合体であるUnicodeやJIS X 0208↑↑で振られた符号を、
さらにパソコンが文字として表現するために「何バイトで」「どのように表現するか」のルールを符号化する方式。
具体的には、
符号化文字集合体Unicodeで振られた符号/コードポイントはUTF-8、UTF-16などでさらに符号化。
符号化文字集合体であるJIS X 0208で振られた符号/コードポイントは、Shift-JISでさらに符号化。
ということなのでした。 現代の主流はUTF-8(Unicodeからの符号化の一つ)で、Webサイト”W3Techs”に掲載されているQ-Success社調べの記録によれば、2022年2月27日現在、な、なんと世界のウエブサイトの97.7%がこちらの方式を使用しているのだとか。
「文字符号化方式」。符号化したものをさらに符号化って・・・
Unicodeの符号ってそのままじゃ使えないわけなのですね。
”さらなる符号化”いらずの文字符号ってないんですか?と思ったのですが、
ありました。
ASCII(American Standard Code for Information Interchange)。
こちらは最初に文字コードを標準化したアメリカが定めたもので、
まだ文字集合と符号化方式という概念が生まれる前の文字コード体系。
そういえば昔こんな名前の、PC関連書を発行する会社がありましたね。
なるほど。進化と共に、他の機能との兼ね合いなどの都合で、いろいろ手続きも多くなるというわけなのですね。
やっぱりここも複雑化しているわけですね💦
と、ある程度謎は解けたものの、基本的にはメール受送信用のアプリの設定の都合や、Webページを表示してくれるブラウザーの都合、そもそも送信した時にファイルが壊れてしまう、等々、、、文字が化けるきっかけはいくらでもあるので、
これを知ったからといって、即、実践的に問題解決できるわけでもないながらも
解決方法を探るときの方法が書かれた記事を読むのに、多少理解しやすくなった・・・かも