我想讓unicode在Visual Studio 2k8項目的窗口上工作,我不確定爲什麼我無法讓我的項目工作。我的機器安裝了所有的東部語言支持。我去了properties-> project defaults->字符集:它被設置爲「使用Unicode字符集」。這是我的測試代碼:爲什麼我的visual studio 2k8 C++項目不能使用unicode字符?
#include <stdio.h>
#include <string>
#define ARAB "گـگـگ گ لـلـل ل"
#define CHINESE "大夨天太夫"
#define VALUE CHINESE
#define LARAB L"گـگـگ گ لـلـل ل"
#define LCHINESE L"大夨天太夫"
#define LVALUE LCHINESE
void AttemptStdString(FILE* file)
{
std::string str(VALUE);
printf("%s: %s, length(%d)\n",__FUNCTION__,str.c_str(),str.length());
fprintf(file, "%s = %s\n",__FUNCTION__, str.c_str());
}
void AttemptStdWideString(FILE* file)
{
std::wstring str = LVALUE;
printf("%s: %s, length(%d)\n",__FUNCTION__,str.c_str(),str.length());
fprintf(file, "%s = %s\n",__FUNCTION__, str.c_str());
}
void AttemptWCharT(FILE* file)
{
wchar_t arry[] = {0x5927,0x5928,0x5929,0x592A,0x592B,0x0000};
printf("%s: %s\n",__FUNCTION__,arry);
wprintf(L"%s: %s\n",__FUNCTION__,arry);
fprintf(file, "%s = %s\n",__FUNCTION__, arry);
fwprintf(file,L"AttemptWCharT = %s\n",arry);
}
int main()
{
FILE* outFile = fopen("output.txt", "w");
AttemptStdString(outFile);
AttemptStdWideString(outFile);
AttemptWCharT(outFile);
fclose(outFile);
return 0;
}
I的結果在終端得到的是:
AttemptStdString:?????,長度(5)
AttemptStdWideString:「Y(Y)Y Y + Y,長度(5)
AttemptWCharT:「Y(Y)Y Y +ý
?????? T:?????
結果在文件中得到的是:
AttemptStdString = ?????
AttemptStdWideString = 'Y(Y)Y Y +ý
AttemptWCharT =' Y(Y)Y Y +ý
AttemptWCharT = ?????
我錯過了什麼「伏都教」我相信這是一件簡單的事情,會使這項工作,似乎我應該能夠打印我的人物,但它是失敗的。此外,我已經檢查過,我可以將這些字符粘貼到文本編輯器中,我打開該文件並顯示正常。我已經嘗試了視覺演播室終端的「Lucida Console」&「光柵字體」選項。請幫忙!我究竟做錯了什麼?
謝謝!
Hans感謝您的幫助,順便說一下它的「ccs = UTF-16LE」,並要求您執行以下操作:_wfopen(L「文件。txt「,L」w +,ccs = UTF-16LE「); 我發現模式」w「必須改變爲」w +「並且您還必須從fopen更改爲_wfopen。 – NSA 2010-07-16 22:15:59