1

我是c++新手,想写一段很简单的代码,但是结果不对,不知道怎么解决。

代码是:

#include <iostream>
#include <string>

using namespace std;

int main() {
    string test_string = "aáeéöôőüűč♥♦♣♠";
    cout << test_string << endl;
    return 0;
}

但结果是:a├íe├ę├Â├┤┼Ĺ├╝┼▒─ŹÔÖąÔÖŽÔÖúÔÖá

我在 Windows 上,使用 Code::Blocks。

4

2 回答 2

1

将文件另存为不带 BOM 签名的 UTF-8,并尝试使用 printf()。

//Save As UTF8 without BOM signature
#include <stdio.h>
#include <windows.h>

int main() {
    SetConsoleOutputCP(65001);
    char test_string[] = "aáeéöôőüűč♥♦♣♠";
    printf(test_string);
    return 0;
}

结果是:aáeéöôőüűč♥♦♣♠

于 2013-09-30T13:22:46.893 回答
0

不幸的是,在 Windows 上使用 UTF-8 非常有问题。

在 Linux 上,您可以简单地wstring像这样:

这段代码是通用的,还是只是我的系统?

但不幸的是,Windows 没有 UTF-8 语言环境,因此您只剩下 Windows API。

http://www.siao2.com/2007/01/03/1392379.aspx

于 2012-09-19T13:32:21.120 回答