8
4

More than 1 year has passed since last update.

ミャンマー語(ビルマ語)の文字コード問題で困ったら

Last updated at Posted at 2019-12-12

#ミャンマー語の文字コードについて
ミャンマーは、歴史的な背景からインターネット技術の発展が世界から取り残された地域の1つ。
従来はZawgyi文字コードが主流でしたが、市場開放され国際化対応が進んでいく中、
UNICODEへ変わりつつあります。

日本の例では、EUCやSJISなどのWebがあった時代から、今ではUTF8に変わってきた歴史に似ています。
https://enjoy-yangon.com/ja/enyanblog/351-change-myanmar-font-zawgyi-to-unicode

#文字コード混在による文字化け対処の基本方針

現地人でなければ、文字自体が文字化けしているような文字なので、何が問題あるのかは我々エンジニア・プロラマーにすればわからないというのが本音。ただし、エンジニアなら、その問題解決に向き合う必要があります。

つまり、問題解決に必要な要件を決めて、ソフトウェアで解決する必要があります。

要件1 ZawgyiかUNICODEが文章で判定できる事
要件2 ZawgyiからUNICODEへ文字コード変換できる事

その2点が必須要件です。

#実際に実装するにあたって
Githubなどを検索するしてみました。
Google Myanmar Toolがヒットしてきました。
https://github.com/google/myanmar-tools

この内容を確認していると、ZawgyiかUNICODEを判定してくれるという機能を持つ事が書かれています。
これを使います。

さらにヒントが隠されていて、ZawgyiからUNICODEへ文字コード変換するには、Rabitを使えと

Rabbit-Converter
https://github.com/Rabbit-Converter

2つライブラリが見つかりました。

PHPならば、composerでライブラリーをインストールし、クラスを読み込みして、通すだけです。
使い方は簡単ですね。

1.文字コードを判定する。
2.変換する

$ZawgyiDetector = new ZawgyiDetector();
$Rabbit = new Rabbit();
$text = 'ミャンマーのテキスト';
$check = $ZawgyiDetector->getZawgyiProbability($text);

if($check >= 0.95){
  $newtext = $Rabbit->zg2uni($text);
}

こんな感じで文字コードを直してやればUNICODEで正しく表示されます。
UNICODEのミャンマーフォントは、WebフォントのUNICODE版をCSSにあてておく必要があります。

#入り口と出口で対処を
CMSなどを使う場合、データベースに入れる時、出す時それぞれか、どちらかで、このコードを入れた対応すれば、文字化けは解決するでしょう。私はデータベースに入れる時にチェックする機能を付ける方がよいと考える派です。
毎回、このロジックを走らせると、文字数次第ではレンダリングが遅くなるから。

レアな話ですが、ミャンマー関係のWebのお仕事される方は、ご参考ください。

それでは、また。

8
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4