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変換が必要な為、そう言う方法はとれませんでした。