C++からVBに文字「Т」(通常の大文字のtではなく、Unicodeの10進数値1058)を送信できるようにしようとしています
ただし、以下のこのメソッドでは、メッセージが VB に返され、ANSI でエンコードされた上記の文字である "Т" として表示されます。
#if defined(_MSC_VER) && _MSC_VER > 1310
# define utf8(str) ConvertToUTF8(L##str)
const char * ConvertToUTF8(const wchar_t * pStr) {
static char szBuf[1024];
WideCharToMultiByte(CP_UTF8, 0, pStr, -1, szBuf, sizeof(szBuf), NULL, NULL);
return szBuf;
}
#else
# define utf8(str) str
#endif
BSTR _stdcall chatTest()
{
BSTR Message;
CString temp("temp test");
temp+=utf8("\u0422");
int len = temp.GetLength();
Message = SysAllocStringByteLen ((LPCTSTR)temp, len+1 );
return Message;
}
temp+=("\u0422"); を実行するだけの場合 utf8 関数なし。データを「?」として送信します。そしてそれは実際には疑問符です(VBではUnicode文字が疑問符として表示されることがありますが、それでも正しいUnicode 10進数値があります..これはここでは当てはまりません...それは疑問符に変わります.
VB では、"Т" のときに Message からのデータを持つ String 変数をテキスト ファイルに出力すると、"Т" として表示されます。
だから、私がC++でUTF8でそれを伝えることができる限り、VBで(または送信前に)何らかの形でANSIに変換され、ファイルに出力されるとUTF8に戻されますか?
C++ から VB に送信するときは、「Т」をそのままにしておく必要があります。VB内の別のソースから保存できるため、VB文字列がその文字を保持できることはわかっています(「?」として表示されますが、適切なUnicode 10進数値があります)。
どんな助けでも大歓迎です。
ありがとう