Avatar billede fbisen Nybegynder
21. november 2007 - 12:56 Der er 8 kommentarer og
1 løsning

Printning af UTF-8 til commandpromt

Hej Eksperter

Jeg er sammen med en anden igang med at lave et skakspil. Vi vil gerne skrive skakbrættet ud på skærmen i en kommandopromt i Windows. Indtil videre har vi brugt en blanding af cout of printf_s, men ingen er i stand til at printe UTF (ikke hvad vi har fundet ud af).
Vi vil gerne printe denne char til skærmen: \u2655
Samme char: ♕

Hvordan printer man denne char til skærmen?
Hjælp! :D
Avatar billede fbisen Nybegynder
21. november 2007 - 12:57 #1
Ups, den kan ikke printe charen ud, det er der hvor der står: ♕
Man kan se den på http://en.wikipedia.org/wiki/Queen_%28chess%29 i starten af teksten!
Avatar billede pidgeot Nybegynder
21. november 2007 - 13:24 #2
Sørg for at der bliver brugt Unicode-funktionerne til udskrift på konsollen - jeg ved ikke om der er en wprintf_s I kan bruge til det.

Kan I ikke det, skulle I kunne bruge code page switching (SetConsoleOutputCP styrer output, SetConsoleCP styrer input) til at skifte til code page 65001 (hvilket svarer til UTF-8 jf. http://msdn2.microsoft.com/en-us/library/ms776446.aspx).
Avatar billede fbisen Nybegynder
21. november 2007 - 13:47 #3
SetConsoleOutputCP(65001);
wcout<<'\u2655';
const wchar_t b = '\u2655';
wprintf_s(&b);

Når vi skriver disse to ud på skærmen, bliver der kun vist '?'.
Har du nogen ide til hvorfor vi ikke får den fine dronningfigur frem?
Avatar billede pidgeot Nybegynder
21. november 2007 - 13:50 #4
I første tilfælde skal du måske, i stedet for at bruge \u-syntaksen, angive den "rå" UTF-8.

Når det så er sagt, så skal du selvfølgelig også sikre dig at kommandoprompten er sat til at køre med en skrifttype der indeholder de relevante tegn.
Avatar billede fbisen Nybegynder
21. november 2007 - 14:02 #5
Det giver samme problem uden \u syntaksen
wcout<<'2655';
Hvis man i Windows højreklikker på kommandopromten og vælger egenskaber -> Skrifttyper, så er der kun to at vælge imellem (Rasterskriftype og Lucida Console).
Begge giver sammen problem.
Jeg ved godt det er udover spørgsmålet, men hvad skulle jeg sætte skiftypen til, og hvordan? Er self. villig til at give flere points hvis det er af interesse.
Avatar billede pidgeot Nybegynder
21. november 2007 - 14:06 #6
...nej, ikke '2655'. Du skal have selve de tegn du så hvis du skrev tegnet i en UTF-8 fil, og åbnede den som var det ANSI (og så vil jeg i øvrigt tro det skal være alm. udskrift når du skifter code page).

Mht. at skifte skrifttype, så skal du ganske rigtigt i egenskaber for kommandoprompten - ikke noget man kan gøre automatisk med kode, mig bekendt. Jeg mener Lucida Console indeholder i hvert fald nogle Unicode-tegn (men det er ikke ensbetydende med den indeholder DE tegn).

Som du måske kan høre, så er der nok en grund til man normalt ikke bruger Unicode i en konsol på Windows. *-)
Avatar billede fbisen Nybegynder
21. november 2007 - 15:08 #7
Okay, så må vi jo give op...
Avatar billede fbisen Nybegynder
22. november 2007 - 10:30 #8
Men hvis ellers nogen har nogle ideer, så er de meget velkomne! Ellers lukker jeg tråden om et par dage.
Avatar billede fbisen Nybegynder
08. december 2007 - 18:40 #9
Lukker tråden
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester