c - printf()/fprintf() issues in Linux, UTF-8 encoding -
so i'm running code:
#include <stdio.h> #include <stdlib.h> int main() { system("chcp 1252 > nul"); // makes scheme take latin characters int = 0; for(i = 0; < 256; i++){ printf("%i:\t%c\n", i, (char)i); } homecoming 0; } this printed console window characters extended ascii table.
i using linux , hoped accomplish same result. aware linux not utilize extended ascii table. have made sure file encoded utf-8, have worked me before. using code::blocks runing console applications gnome terminal, set utf-8. output not expected:
33: ! 34: " 35: # 36: $ 37: % 38: & 39: ' 40: ( 41: ) 42: * 43: + ... 69: e 70: f 71: g 72: h 73: ... 103: g 104: h 105: 106: j 107: k 108: l ... 127: 128: � 129: � ... 254: � 255: � what missing here.. there has way it. have tried many solutions far, 1 of them being:
... #include <locale.h> int main() { setlocale(lc_all,"portuguese"); ... } but far, has been no avail. help appreciated
edit 1: ok! got print utf-8 encoded chars terminal. printing file not working expected. using wchar.h , locale.h such:
#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 terminal fprintf(fpinout,"%i\t%lc", index, index); //does not work, output wierd } fclose(fpinout); } i tried utilize index there both wint_t , wchar_t. utf-8.txt file looks this:
रĉल㌂̉ऴ㔄ԉश㜆܉स㤈उ〱ਉㄱଉ㈱ఉ㌱ഉ㐱ฉ㔱༉㘱ဉ㜱ᄉ㠱ሉ㤱ጉ〲ᐉㄲᔉ㈲ᘉ㌲ᜉ㐲᠉㔲ᤉ㘲ᨉ㜲ᬉ㠲ᰉ㤲ᴉ〳ḉㄳἉ㈳ ㌳℉㐳∉㔳⌉㘳␉㜳 ┉㠳☉㤳✉〴⠉ㄴ⤉㈴⨉㌴⬉㐴Ⰹ㔴ⴉ㘴⸉㜴⼉㠴〉㤴ㄉ〵㈉ㄵ㌉㈵㐉㌵㔉㐵㘉㔵㜉㘵㠉㜵㤉㠵㨉㤵㬉〶㰉ㄶ㴉㈶㸉㌶㼉㐶䀉㔶䄉㘶䈉 㜶䌉㠶䐉㤶䔉〷䘉ㄷ䜉㈷䠉㌷䤉㐷䨉㔷䬉㘷䰉㜷䴉㠷三㤷伉〸倉ㄸ儉㈸刉㌸匉㐸吉㔸唉㘸嘉㜸圉㠸堉㤸変〹娉ㄹ嬉㈹尉㌹崉㐹帉 㔹弉㘹怉㜹愉㠹戉㤹按〱रㅤ攉〱लㅦ㌰有〱ऴㅨ㔰椉〱शㅪ㜰欉〱सㅬ㤰洉ㄱरㅮㄱ漉ㄱलㅰ㌱焉ㄱऴㅲ㔱猉ㄱशㅴ㜱甉ㄱसㅶ㤱眉 ㈱रㅸㄲ礉㈱लㅺ㌲笉㈱ऴㅼ㔲紉㈱शㅾ㜲缉㈱स胂㈱ह臂㌱र苂㌱ऱ菂㌱ल蓂㌱ळ藂㌱ऴ蛂㌱व蟂㌱श裂㌱ष观㌱स諂㌱ह诂㐱र賂㐱ऱ跂㐱ल軂㐱 ळ迂㐱ऴ郂㐱व釂㐱श鋂㐱ष鏂㐱स铂㐱ह闂㔱र雂㔱ऱ韂㔱ल飂㔱ळ駂㔱ऴ髂㔱व鯂㔱श鳂㔱ष鷂㔱स黂㔱ह鿂㘱रꃂ㘱ऱꇂ㘱लꋂ㘱ळꏂ㘱ऴ꓂ 㘱वꗂ㘱शꛂ㘱षꟂ㘱सꣂ㘱ह꧂㜱रꫂ㜱ऱꯂ㜱ल곂㜱ळ귂㜱ऴ껂㜱व꿂㜱श냂㜱ष뇂㜱स닂㜱ह돂㠱र듂㠱ऱ뗂㠱ल뛂㠱ळ럂㠱ऴ룂㠱व맂㠱श뫂 㠱ष믂㠱स볂㠱ह뷂㤱र뻂㤱ऱ뿂㤱ल胃㤱ळ臃㤱ऴ苃㤱व菃㤱श蓃㤱ष藃㤱स蛃㤱ह蟃〲र裃〲ऱ觃〲ल諃〲ळ诃〲ऴ賃〲व跃〲श軃〲ष迃〲स郃〲ह 釃ㄲर鋃ㄲऱ鏃ㄲल铃ㄲळ闃ㄲऴ雃ㄲव韃ㄲश飃ㄲष駃ㄲस髃ㄲह鯃㈲र鳃㈲ऱ鷃㈲ल黃㈲ळ鿃㈲ऴꃃ㈲वꇃ㈲शꋃ㈲षꏃ㈲स꓃㈲हꗃ㌲रꛃ㌲ऱꟃ㌲ लꣃ㌲ळ꧃㌲ऴ㌲वꯃ㌲श곃㌲ष귃㌲स껃㌲ह꿃㐲र냃㐲ऱ뇃㐲ल닃㐲ळ돃㐲ऴ듃㐲व뗃㐲श뛃㐲ष럃㐲स룃㐲ह맃㔲र뫃㔲ऱ믃㔲ल볃㔲ळ뷃㔲ऴ뻃 㔲व뿃 any help appreciated.
printf %c can't used generate utf8 output. outputs single byte ascii. utf8 single byte first 128 characters map ascii. after that, utf8 multibyte per character.
see reply method of generating non ascii characters using wide characters.
how iterate through unicode characters , print them on screen printf in c?
c linux utf-8 printf
No comments:
Post a Comment