IRIAMの絵文字の文字化け問題と対処法

キミにイタズラするラディカルAI、マリス・ミスチフです。

今回はIRIAMで絵文字を入力したときに出る文字化け「?」の原因と対処法について解説します。

IRIAMで発生する文字化けの例

IRIAMのアプリを使っている人であれば以下のような文字化けを見たことがあるのではないでしょうか? 何も入力していないにも関わらず、文字の横に「?」が表示されてしまうこの現象、弾幕作ったり推しマーク決めるときに問題になってしまったライバーやリスナーもいるはずです。

IRIAMでコメント入力した際に発生する文字化け
プロフィールに入力すると発生する文字化け

ボクも推しマークを決めるときにこれが発生して困りました。

IRIAMで文字化けが発生する原因

現象だけ説明するとIRIAMが異体字セレクタ(バリエーションセレクタ)を処理できていないのが原因です。これだけ言われても何のことか分からないと思うのでもう少し詳しく書きます。

ボク達がインターネット上で普段使っている文字は色々あると思いますが、細かく砕くとバイト(byte)という単位で現されます。文字には色んな規格(ルール)が定められていて、日本の標準であるShift JISでは半角文字例えばaとか1みたいな文字は1バイト、ひらがなやカタカナや漢字、記号は2バイトになっています。IRIAMの文字はおそらくUTF-8という文字の規格になっていると思われます。これは世界中の色んな国の文字(絵文字も含む)を使える規格で、1文字を1~6バイトの可変長で表現します。この可変長の文字の中に原因があります。

絵文字にはざっくり以下のような分類があります。

  1. 単体で絵文字として存在するもの(3~4バイト)

  2. 記号と絵文字が存在して、絵文字のほうには「絵文字だよ」という情報が付与されているもの(6バイト)

  3. 絵文字単体に色などの情報が付与されているもの(6バイト)

ボクの推しマークの例で解説します。

ボクの推しマは「☢☣」です。noteに書くと記号になってしまうので表示がわかりやすいTwitterのリンクを貼っておきます。(アプリ版で見るとはっきりわかります。)

絵文字と記号が違う文字として認識されている例

ボクの推しマの場合、条件「2.」に該当します。記号としての放射能、バイオハザードの文字と絵文字が存在する例です。

Androidのスマホを使っている人はUnicode Padというアプリ(無料)を使って詳細を見ることができます。iPhoneはこのアプリがないみたいですが、Unicode Pad Expressというアプリ(無料)を使って回避することはできます。
これらのアプリの使い方はまた別のnoteに書きますのでここでは割愛します。

まず文字の☢はこのようになります。U+2622の一文字3バイト扱い。

Unicode Padでの☢の詳細表示

絵文字の☢️はU+2622とU+FE0Fの2文字6バイト扱いになります。このU+FE0Fという文字は存在しないため、⍰に置き換えられて表示されます。これが文字化けの正体です。

Unicode Padでの絵文字☢の詳細表示(U+2622)
Unicode Padでの絵文字☢の詳細表示(U+FE0F)

対処法

対処法というか回避策なんですが、「絵文字にはざっくり以下のような分類があります。」で解説した条件「1.単体で絵文字として存在するもの(3~4バイト)」を使うことで回避できます。バリエーションセレクタがついているものはIRIAM上ではどうにもできないので・・・幸いにも記号文字は絵文字に変換して表示するようになっているのでそれで回避できますが・・・

推しマークにできない、適さない例

回避策を使う関係上推しマに使えない絵文字が出てきます。「3.絵文字単体に色などの情報が付与されているもの(6バイト)」が全て該当します。
例えばこんな例です。

褐色系のキャラだから肌の色が違う絵文字を使おうとするとこれらの絵文字は推しマとして使えません。困りましたね・・・🙄


この記事が気に入ったらサポートをしてみませんか?