Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C fprintf()发布utf-8 linux_C_Linux_Utf 8_Printf - Fatal编程技术网

C fprintf()发布utf-8 linux

C fprintf()发布utf-8 linux,c,linux,utf-8,printf,C,Linux,Utf 8,Printf,好的,我要把UTF-8编码的字符打印到终端。但打印到文件并不像我预期的那样工作。使用wchar.h和locale.h本身: #include <locale.h> #include <wchar.h> int main(){ setlocale(LC_ALL,""); wint_t index = 0; FILE* fpinout = fopen("UTF-8.txt","w"); for(index = 0; index <

好的,我要把UTF-8编码的字符打印到终端。但打印到文件并不像我预期的那样工作。使用wchar.h和locale.h本身:

#include <locale.h>
#include <wchar.h>

int main(){
    setlocale(LC_ALL,"");

    wint_t index = 0;

    FILE* fpinout = fopen("UTF-8.txt","w");
    for(index = 0; index < 0x200; index++){
        printf("%i:\t%lc\n", index, index); //works fine, prints utf-8 chars to terminal
        fprintf(fpinout,"%i\t%lc", index, index); //does not work, output is wierd
    }
    fclose(fpinout);
}

非常感谢您的帮助。

这样您就可以根据事实编写UTF32了。以二进制模式打开文件没有帮助。它将保持UTF32LE


您应该使用转换到UTF8编码。使用ICU库或wctombs/wctombs/wclen c函数()。请注意,wctumble*函数通常依赖于语言环境(如果使用希腊语言环境,则通常无法正确使用日语)

以二进制模式打开文件可能会有所帮助<代码>fopen(“UTF-8.txt”、“wb”)您的终端和文件查看器使用不同的解码。相同的数据将进入标准输出和“UTF-8.txt”,但您的读取方式不同。@chux我使用gedit作为文本编辑器/查看器,并且能够通过以下过程以UTF-8格式打开文件:以字符编码方式打开gedit>打开>选择UTF-8>打开文件通过这样做,我得到了正确的输出。但我不能默认这样做。我还可以确认,写一个文本文件并从中读取是可能的,输出到终端的字符是正确的。建议发布输入和/或预期输出。您能对您的答案进行一点扩展吗?当然可以,但我想知道您不清楚的地方。UTF-8是可变长度编码,即每个符号可以从1(对于ASCII)开始,最多4个字节(在实际使用中)和理论上的6个字节。Terminal足够聪明,因为它是在UTF8模式下运行的,文件是常用的文件,它们包含您提供的内容,并且形成UTF-8视图,您提供的视图是您在编辑器中打开文件时实际看到的。wikipedia的文章很好,我想知道如何使用C/C++的ICU库,特别是在UbuntuTrusty中,来实现这个结果。我使用的是C::B IDE。我找到了这个关于构建和安装ICU的教程:但是现在呢?把它当作所有其他库使用。如果你不知道我认为谷歌会有什么帮助。基本上,您必须指定include path和library path+library,比如compiler-I/my\u-icu/header/path-L my\u-place-to\u-icu-library-licu的选项。我个人不使用ubuntu(顺便说一句,我推荐gentoo),但我怀疑你已经在ubuntu中安装了icu,甚至可能你已经安装了带有标题的icu。那么简单的gcc my_程序.c-licu应该会有所帮助。
र㄀ĉल㌂̉ऴ㔄ԉश㜆܉स㤈उ〱ਉㄱଉ㈱ఉ㌱ഉ㐱ฉ㔱༉㘱ဉ㜱ᄉ㠱ሉ㤱ጉ〲ᐉㄲᔉ㈲ᘉ㌲ᜉ㐲᠉㔲ᤉ㘲ᨉ㜲ᬉ㠲ᰉ㤲ᴉ〳ḉㄳἉ㈳ ㌳℉㐳∉㔳⌉㘳␉㜳
┉㠳☉㤳✉〴⠉ㄴ⤉㈴⨉㌴⬉㐴Ⰹ㔴ⴉ㘴⸉㜴⼉㠴〉㤴ㄉ〵㈉ㄵ㌉㈵㐉㌵㔉㐵㘉㔵㜉㘵㠉㜵㤉㠵㨉㤵㬉〶㰉ㄶ㴉㈶㸉㌶㼉㐶䀉㔶䄉㘶䈉
㜶䌉㠶䐉㤶䔉〷䘉ㄷ䜉㈷䠉㌷䤉㐷䨉㔷䬉㘷䰉㜷䴉㠷三㤷伉〸倉ㄸ儉㈸刉㌸匉㐸吉㔸唉㘸嘉㜸圉㠸堉㤸変〹娉ㄹ嬉㈹尉㌹崉㐹帉
㔹弉㘹怉㜹愉㠹戉㤹按〱रㅤ㄰攉〱लㅦ㌰有〱ऴㅨ㔰椉〱शㅪ㜰欉〱सㅬ㤰洉ㄱरㅮㄱ漉ㄱलㅰ㌱焉ㄱऴㅲ㔱猉ㄱशㅴ㜱甉ㄱसㅶ㤱眉
㈱रㅸㄲ礉㈱लㅺ㌲笉㈱ऴㅼ㔲紉㈱शㅾ㜲缉㈱स胂㈱ह臂㌱र苂㌱ऱ菂㌱ल蓂㌱ळ藂㌱ऴ蛂㌱व蟂㌱श裂㌱ष观㌱स諂㌱ह诂㐱र賂㐱ऱ跂㐱ल軂㐱
ळ迂㐱ऴ郂㐱व釂㐱श鋂㐱ष鏂㐱स铂㐱ह闂㔱र雂㔱ऱ韂㔱ल飂㔱ळ駂㔱ऴ髂㔱व鯂㔱श鳂㔱ष鷂㔱स黂㔱ह鿂㘱रꃂ㘱ऱꇂ㘱लꋂ㘱ळꏂ㘱ऴ꓂
㘱वꗂ㘱शꛂ㘱षꟂ㘱सꣂ㘱ह꧂㜱रꫂ㜱ऱꯂ㜱ल곂㜱ळ귂㜱ऴ껂㜱व꿂㜱श냂㜱ष뇂㜱स닂㜱ह돂㠱र듂㠱ऱ뗂㠱ल뛂㠱ळ럂㠱ऴ룂㠱व맂㠱श뫂
㠱ष믂㠱स볂㠱ह뷂㤱र뻂㤱ऱ뿂㤱ल胃㤱ळ臃㤱ऴ苃㤱व菃㤱श蓃㤱ष藃㤱स蛃㤱ह蟃〲र裃〲ऱ觃〲ल諃〲ळ诃〲ऴ賃〲व跃〲श軃〲ष迃〲स郃〲ह
釃ㄲर鋃ㄲऱ鏃ㄲल铃ㄲळ闃ㄲऴ雃ㄲव韃ㄲश飃ㄲष駃ㄲस髃ㄲह鯃㈲र鳃㈲ऱ鷃㈲ल黃㈲ळ鿃㈲ऴꃃ㈲वꇃ㈲शꋃ㈲षꏃ㈲स꓃㈲हꗃ㌲रꛃ㌲ऱꟃ㌲
लꣃ㌲ळ꧃㌲ऴ꫃㌲वꯃ㌲श곃㌲ष귃㌲स껃㌲ह꿃㐲र냃㐲ऱ뇃㐲ल닃㐲ळ돃㐲ऴ듃㐲व뗃㐲श뛃㐲ष럃㐲स룃㐲ह맃㔲र뫃㔲ऱ믃㔲ल볃㔲ळ뷃㔲ऴ뻃
㔲व뿃