UTF8字符在C中打印到文件

UTF8字符在C中打印到文件,c,utf-8,C,Utf 8,ı我正在努力学习c语言编码。 我想打印utf-8字符度(°) ı在代码中使用大量fprintf,因此如果ı理解正确,则无法使用宽字符或FWrintf。 使用下面的代码,可以在我本地的Ubuntu机器上获得所需的结果,但这段代码是 fprintf(a,"\u00B0"); 用于课堂教学,并在moodles vpl上运行 正如您在屏幕上看到的,未打印学位符号。 因此,寻找替代方法,在某个地方看到\u是编译器依赖的,也许这就是原因。 ı也尝试过 char b*={0xC2,0xB0,0};

ı我正在努力学习c语言编码。 我想打印utf-8字符度(°)

ı在代码中使用大量fprintf,因此如果ı理解正确,则无法使用宽字符或FWrintf。 使用下面的代码,可以在我本地的Ubuntu机器上获得所需的结果,但这段代码是

 fprintf(a,"\u00B0"); 
用于课堂教学,并在moodles vpl上运行

正如您在屏幕上看到的,未打印学位符号。 因此,寻找替代方法,在某个地方看到\u是编译器依赖的,也许这就是原因。 ı也尝试过

char b*={0xC2,0xB0,0};
fprintf(a,"%s",b);
没有像预期的那样工作 寻找替代方法

非常感谢。 您的输出: 537172~38'16.8012“东43~31'26.4002”南新西兰克赖斯特彻奇36392674.05 536171~12'25.2015“E 42~28'19.1967”新西兰格雷茅斯9419182.24 538 170~28'26.4155英寸东45~53'2.3925英寸南新西兰达尼丁114347 240.97


预期产出: 537 172°38'16.8012“东43°31'26.4002”南新西兰克赖斯特彻奇363926 74.05 536 171°12'25.2015“E 42°28'19.1967”新西兰格雷茅斯9419 182.24 538 170°28'26.4155英寸东45°53'2.3925英寸南新西兰达尼丁114347 240.97

ı尝试了不同的方法,有时会出现错误; 当ı尝试将区域设置设置为utf8encode或printf(\u00b0)时
cat:user.out.disp:没有这样的文件或目录

您能否用鼠标选择输出和预期输出中的文本,并将其复制粘贴到此处?猜一猜,试试
printf(“”)。我尝试了,得到了同样的结果。一些未知的字符,如tilda和ı忘了提到ı也尝试了printf(“\xc2b0”),printf(“\xc2\xb0”)也不起作用。您能将文本粘贴到“您的输出:”和“预期输出”:这里是关于stackoverflow到您的帖子中?如果您不遵循SO的规则发布condenst,但完整的代码显示了行为,那么很难帮助您。这里通常的问题是与运行时的连接。通常,您必须确保您有一个UTF-8语言环境,并且告诉您的C程序使用它。默认情况下,您的程序使用C语言环境,该语言环境通常不支持UTF-8。要启用它,您通常必须在程序开始时执行类似于
setlocale(LC_ALL,“”)
的操作。您能用鼠标选择输出和预期输出中的文本,并将其复制粘贴到此处吗?猜一猜,试试
printf(“”)。我尝试了,得到了同样的结果。一些未知的字符,如tilda和ı忘了提到ı也尝试了printf(“\xc2b0”),printf(“\xc2\xb0”)也不起作用。您能将文本粘贴到“您的输出:”和“预期输出”:这里是关于stackoverflow到您的帖子中?如果您不遵循SO的规则发布condenst,但完整的代码显示了行为,那么很难帮助您。这里通常的问题是与运行时的连接。通常,您必须确保您有一个UTF-8语言环境,并且告诉您的C程序使用它。默认情况下,您的程序使用C语言环境,该语言环境通常不支持UTF-8。要启用它,通常必须在程序开始时执行类似于
setlocale(LC_ALL,“”)
的操作。