Unicodeについて

解決


ぱすた  2007-05-24 03:43:05  No: 65169

ある市販プログラムに、文字列を送って操作するプログラムをVC++6.0で作り、使っていました。
最近、対象のプログラムが、Unicode対応に変更され文字列を受け付けなくなってしまいました。

今まで、Unicodeなど全く気にしていなかったんですが、
そこで、MSDNでUnicodeについて読んで見たんですが、
どうもVC++自体再インストールしなおして、Unicode対応に変更してします方法
など、少し大掛かりなことになってしまいそうです。

文字列は、英数字のみなんですが、手軽な方法はないものでしょうか?
よろしく、お願い致します。


  2007-05-24 04:15:02  No: 65170

.NETなら再インストールなんていらんけど、VC6だからかな?

どうしてもというなら、文字コードを調べて自分で変換関数を作ったら?
英数に限定されるなら大した文字数じゃないだろうし、UNICODEでアルファベットを書いたテキストファイルをバイナリエディタで開けば文字コードは分かるでしょ。

ま、俺なら再インストールするけど。


mあ  2007-05-24 11:23:20  No: 65171

英数記号だけ?
なら簡単。
char buffer[256];

unsigned short buffer[256];
にして、
例えば、数字の0は、 0x30 ですが、
buffer[0] = (unsigned short)0x30;
ってするだけ。
文字列なら、

wstrcopy(const char *s, unsigned short buffer) {
   int i;
   for (i=0;i < strlen(s);i++) buffer[i] = (unsigned short)s[i];
   buffer[i] = 0;
}
ってすればいいかな。

16ビットUNICODE の0x00FF 以下は、2〜3個の全角文字がありますが、
0x7F 以下は、ASCII と一対一で対応します。
上位バイトが0なだけ。


NAO★  2007-05-26 02:59:50  No: 65172

出力する直前にMultiByteToWideChar APIを使って変換すれば簡単です。

char ansi[256];
wchar_t unicode[256];
MultiByteToWideChar(CP_ACP, NULL, ansi, -1, unicode, sizeof (unicode)/ sizeof (unicode[0]));


ぱすた  2007-05-26 05:47:19  No: 65173

いさま、mあさま、NAOさま

ご指導有難うございました。
なんとか、解決できました。


ぱすた  2007-05-28 03:46:25  No: 65174

解決を忘れてまいした。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加