我試圖能夠發送字符「Т」(不正常的資本噸,unicode的十進制值1058)從C++到VBC++字符串編碼UTF8/unicode的
然而,用這種方法進行的返回信息到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功能。它將數據發送爲「?」它實際上是一個問號(有時unicode字符在VB中顯示爲問號,但仍然有正確的unicode十進制值..這裏不是這種情況...它將其更改爲問號
In VB如果我輸出的字符串變量有消息時,它的數據是「Т」到一個文本文件它顯示爲「Т」
所以據我可以告訴它在UTF8的C + +,然後以某種方式在VB中轉換爲ANSI(或在它發送之前),然後當輸出到一個文件時,它變回UTF8?我只需要在從C++發送到VB時保持「Т」不變。 VB字符串可以容納該字符,因爲來自另一個字符串在VB內我可以存儲它(它顯示爲「?」,但具有適當的Unicode十進制值)。
任何幫助是極大的讚賞。
感謝
爲什麼要用這樣一個美麗的語言如C++,然後使用VB毀了嗎? :P –
您可能需要閱讀http://stackoverflow.com/a/6072627/13760的細節如何C++ 11個解決了這個問題你:) – Carl
宇宙先生,因爲我吸:) – user1088794