目标是使用C ++打印Uni Würzburg
我正在使用的代码:
#include <stdio.h>
using namespace std;
int main() {
char str0[21] = "Uni Würzburg";
printf("%s\n", str0);
char str1[21] = {85,110,105,32,87,'\xc3','\xbc',114,122,98,117,114,103, 0};
printf("%s\n", str1);
char str2[20] = "Uni W\x81rzburg";
printf("%s\n", str2);
char str3[20] = {85,110,105,32,87,'\x81',114,122,98,117,114,103, 0};
printf("%s\n", str3);
return 0;
}
我通过创建\xc3bc
字符串并打印字符来获得"ü"
。
在两台不同的Mac上输出(使用CLION和使用g++ test.c -o test
的bash):
Uni Würzburg
Uni Würzburg
Uni W�rzburg
Uni W�rzburg
Windows上的输出(CLion):
Uni W├╝rzburg
Uni W├╝rzburg
Uni Würzburg
Uni Würzburg
CLion编辑器和项目编码在所有情况下都设置为UTF-8,bash的语言环境为:
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL=
为什么会这样?最重要的是:什么是独立于平台的解决方案?
答案 0 :(得分:3)
有unicode文字可用于确保您的字符串被编码为UTF-8:
u8"my_string"
在Linux上,这些正常的字符串将是UTF-8。
在Windows上,它实际上取决于你的编码。
您还可以提供额外的编译器标志:/source-charset:utf-8
请注意,即使您的字符串在Windows上编码为UTF-8,cout,使用非unicode代码页打印到控制台也会导致输出错误。