質問: 文字コードについて勉強しています。 今、文字化けについて考えています。 たとえば、ホッケ「𩸽」(U+29E3D)という字が表示されない場合、原因は以下のどちらでしょうか? * 表示しているフォントが「𩸽」に対応してない * 表示している環境のOSが「𩸽」に対応していない 使える文字を増やしたいとき、OSを新しくすればよいのか、フォントを変えればよいのかが分かりません。 ### 補足 たとえば、今 Unicode9.0で追加されたクロワッサンの絵文字(U+1F950 : [🥐 ]:CROISSANT)が書かれたファイルを、複数人に渡して、テキストエディタで閲覧してもらいいです。 「このファイルは以下の環境ならば閲覧できます」と伝えたいのですが、具体的に何を指定すればよいしょうか? OSを指定すればよいのか、エディタなのか、フォントなのかを、知りたいです。 ちなみに、私の環境(Windows10, sakura editor, MSゴシック)ではクロワッサンの絵文字は表示できています。 また同様の質問ですが、クロワッサンの絵文字をブラウザに表示したいときき、「OSを指定するのか、ブラウザを指定するのか」も知りたいです。
回答: ソフトウェアの作りが原因の場合もあります。というか、そのケースは結構多いです。 `U+29E3D`はUnicodeの「追加多言語面(SMP)」に属していて、見ての通り16ビットを超えています。Unicodeに正しく対応していないアプリには「基本多言語面(BMP)」という16ビットで表現可能な範囲しか扱えない物も存在します。 > > 使える文字を増やしたいとき、OSを新しくすればよいのか、フォントを変えればよいのかが分かりません。 > > > 具体的に何をしたいのか、何のOSのどのバージョンなのかを示していただかないと何とも言えません。追加多言語面は2001年とだいぶ前に実装されているので、現在リリースされているOSで未対応なのは、テキスト処理をする必要がない小規模な組み込み機器向けのOSだけだと思います。 ただ、フォントの対応状況はOSによって異なり、Windowsは有料ということもあってか更新は素早いですが、Linuxはディストリビューションによってまちまちです。 そして、前述の通りソフトウェアの対応状況も重要です。中には追加多言語面の文字を渡すと、フリーズしたり暴走したりといった不具合を起こす物もあります(UTF-8を最大3バイトとみなしていた時期があったため)。 また、例えばMySQLというデータベースシステムは、追加多言語面を扱うには文字コードを「utf8mb4」に設定するなど、利用の際には注意が必要なケースもあります。