夏も開発中です (178)

←← 掲示板一覧に戻る ← スレッド一覧に戻る

93 - 来世はカメムシ 2023/09/15(金) 21:55:09.89 ID:rU3aR28y0

旧verと0.8verの互換プラグインはこれ使えばかなり作りやすくなるんじゃ?
https://blog.netandfield.com/shar/2017/07/perl-utf-8shift-jis-api.html
Encode::from_to( $text, "UTF8", "Shift_JIS");

書けば、変数 $text の内容を UTF-8 から Shift JIS に変換してくれるんだけど、ここにオプション XMLCREF をつけると、変換できなかった文字(UTF-8 に有って、Shift JIS に無い文字)を数値文字参照コードで出力してくれる。

例えば「ハシラダカ」と呼ばれる「」の文字は Shift JIS には無いので、「林」を

Encode::from_to( $text, "UTF8", "Shift_JIS", Encode::XMLCREF );


という具合に変換してやれば、

髙林


という結果が $text にセットされる。髙 が数値文字参照コードね。
ちなみに、Windows 拡張版の Shift JIS(Windows-31j)であれば「ハシラダカ」も文字セットに含まれているので、

Encode::from_to( $text, "UTF8", "CP932", Encode::XMLCREF );


であれば、そのまま「林」が結果に返ってくる。
もちろん、Windows-31j に含まれていない文字は数値文字参照コードで返ってくる。


問題は毎回文字コード判断してたら遅いからバージョンとか持ってきて決め打ち出来たら楽なんだけどなぁ
決め打ち出来るなら他の言語にロジック吐き出させてPHPに移行が完了してもラッパー書くだけで使い回せるようになる