gpt4 book ai didi

c++ - 为什么我的 visual studio 2k8 C++ 项目不能使用 unicode 字符?

转载 作者:可可西里 更新时间:2023-11-01 11:39:54 25 4
gpt4 key购买 nike

我正在尝试让 unicode 在 vi​​sual studio 2k8 项目中的 Windows 上运行,但我不确定为什么我无法让我的项目运行。我的机器安装了所有东方语言支持。我去了 properties->project defaults->character set: 并将其设置为“使用 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;
}

我在终端得到的结果是:

AttemptStdString: ?????, length(5)
AttemptStdWideString: 'Y(Y)YY+Y, length(5)
AttemptWCharT: 'Y(Y)Y
Y+Y
??????T: ?????

在文件中得到的结果是:

AttemptStdString = ?????
AttemptStdWideString = 'Y(Y)YY+Y
AttemptWCharT = 'Y(Y)Y
Y+Y
AttemptWCharT = ?????

我错过了什么“巫术”我确信这很简单,可以使这项工作正常进行,似乎我应该能够很好地打印出我的角色,但它失败了。我也检查过,我可以将字符粘贴到我用来打开文件的文本编辑器中,它们显示正常。我已经尝试了适用于 visual studio 终端的“Lucida Console”和“Raster Fonts”选项。请帮忙!我做错了什么?

谢谢!

最佳答案

问题不完全是因为你的代码,而是你如何看待文本。您的文本编辑器可以知道文件包含 Unicode 的唯一方法是通过所需的 BOM。你一个都没写。在 _wfopen() 模式字符串中使用“ccs=UTF-16LE”。

控制台也有类似的问题,无法显示UTF-16编码的字符。它仅处理 8 位字符,您必须使用 UTF-8 编码和 SetConsoleOutputCP()。

另一个问题是 __FUNCTION__ 宏。那仍然是一个 8 位的字符串。您必须使用 %hs 格式说明符。

关于c++ - 为什么我的 visual studio 2k8 C++ 项目不能使用 unicode 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3267559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com