最近の文字コード事情

SSです。ご無沙汰してしまいました。

皆さんは、文字コード変換をどのように処理していますか?

UTF-8とSJIS、SJISとUTF-8の変換です。

今回は、RXマイコン使用で、ブルートゥースを使用した通信でした。

日本語をUTF-8で受信し、内部はSJISで処理し、有機ELディスプレイに漢字表示する装置です。

私の使用しているRXのCコンパイラーは、Locale.hなどの文字コード変換の処理を実装していません。

よって、テーブル変換にて処理する事になりました。

皆さんは他に何かいい方法をご存知ないでしょうか。

  • SSさん

    こーゆーやり方はいかがでしょう?

    nakai99.sakura.ne.jp/.../U8ToSTech.htm

    と思ったけど、wcstombs_s関数使うから駄目でしたね。

    やっぱり計算式で変換したいですよねー。

  • Kirinさん

    #include <stdlib.h> // for mbstowcs_s(), wcstombs_s()

    #include <locale.h> // for setlocale()

    の関数が、サポート外ですよね。

  • JISとUnicodeの文字の並びは関連性がなくテーブルを用意する以外方法はないのでは。

  • 結果的にFAT32のファイルシステム用の変換処理で対応したんですが、

    だれでも使えるものじゃないので、メンテナンス等で困るんですよね。

    組み込み用にライブラリ化か、サンプルソースにしてくれるといいんですが、

    テーブル処理は美しくないですよね。

  • > 日本語をUTF-8で受信し、内部はSJISで処理し、有機ELディスプレイに漢字表示する装置です。

    この方向なら、UTF-8をUTF-16に変換して、UTF-16から参照するFONTテーブルを作っちゃえば良いような。

    と言うか私、そうしました。

  • @chobichanさん

    FONTをUTF-16対応にするのは、手間なんですが出来なくもありませんね。

    但し、今回のUTF-8からSJIS変換は、全体の一部の機能の為、通常の処理に

    おいて内部の処理もUTF-16化しないといけませんよね。

    内部処理がSJISで出来てるのを前提に書いてあるソースを見直す作業等で

    デメリットの方が多く。今回はSJIS変換が必要な為、そう言う方法はとれませんでした。