hur som helst orkar jag inte använda x86 osv
Kopierade detta inlägg från ett forum
Men den där koden funkar inte..finns det något annat sätt? förutom just den koden eller {x86 osv :P
Jag har windows 7 64 bit om det spelar någon roll
Det där med font och det funkar men då måste ju alla göra det varje gång :(
Visa spoiler
Denna fråga borde kanske läggas till i FAQ?
Jag vet tyvärr ingen snygg lösning på detta problem som fungerar överallt. Visserligen kan man använda alternativa konsoller i Windows som t ex bash, men då måste ju också alla andra personer som man vill ska kunna köra programmet ha det.
Här är en liten sammanfattning jag skrev ihop:
Anledningen till att åäöÅÄÖ (och alla andra "udda" tecken som é, ü, osv) inte ser rätt ut i konsollen, beror på att den som standard är satt till OEM-850 medans allt annat kör Windows-1252 (Latin I). Dessa är inte helt kompatibla då vissa tecken har helt olika koder.
Det finns två sätt att lösa det på, fixa koden eller fixa konsollen.
Lösning 1: (Fixa koden)
Byt ut alla tecken (alternativt använda t ex UltraEdit och köra ANSI-to-OEM):
å = x86
ä = x84
ö = x94
Å = x8F
Ä = x8E
Ö = x99
T ex:
printf("x86x84x94x8Fx8Ex99
"); // skriver ut åäöÅÄÖ
Men det är inte alltid detta fungerar så bra; för om man t ex sparar text till en fil och öppnar den med notepad, så ser alla åäöÅÄÖ ut som †„”Ž™. Det går dock att fixa genom att sätta fonten till Terminal.
Knivigare blir det om det är andra (Windows-)program som ska öppna filen, t ex om det är en lista över filer (som en m3u-playlist).
Lösning 2: (Fixa konsollen)
Högerklicka på titelraden för konsollfönstret, välj Properties/Egenskaper.
Gå till Font, sätt den till "Lucida Console", tryck OK och välj att det ska gälla alla fönster.
Lösning 2a: (Fungerar endast i WinNT/2K/XP)
Lägg till i din kod:
#include <windows.h>
och lägg till detta i början av main:
SetConsoleOutputCP(1252);
Lösning 2b:
Skriv i konsollen: (detta måste göras varje gång du startar en ny konsoll, men det går att lösa genom att skapa en genväg till "cmd.exe /c chcp 1252")
Om du kör WinNT/2K/XP:
chcp 1252
Om du kör Win9X:
mode con cp select=1252
Dock så fungerar varken 2a eller 2b särskilt bra om man inte har satt fonten till Lucida Console.
Jag vet tyvärr ingen snygg lösning på detta problem som fungerar överallt. Visserligen kan man använda alternativa konsoller i Windows som t ex bash, men då måste ju också alla andra personer som man vill ska kunna köra programmet ha det.
Här är en liten sammanfattning jag skrev ihop:
Anledningen till att åäöÅÄÖ (och alla andra "udda" tecken som é, ü, osv) inte ser rätt ut i konsollen, beror på att den som standard är satt till OEM-850 medans allt annat kör Windows-1252 (Latin I). Dessa är inte helt kompatibla då vissa tecken har helt olika koder.
Det finns två sätt att lösa det på, fixa koden eller fixa konsollen.
Lösning 1: (Fixa koden)
Byt ut alla tecken (alternativt använda t ex UltraEdit och köra ANSI-to-OEM):
å = x86
ä = x84
ö = x94
Å = x8F
Ä = x8E
Ö = x99
T ex:
printf("x86x84x94x8Fx8Ex99
"); // skriver ut åäöÅÄÖ
Men det är inte alltid detta fungerar så bra; för om man t ex sparar text till en fil och öppnar den med notepad, så ser alla åäöÅÄÖ ut som †„”Ž™. Det går dock att fixa genom att sätta fonten till Terminal.
Knivigare blir det om det är andra (Windows-)program som ska öppna filen, t ex om det är en lista över filer (som en m3u-playlist).
Lösning 2: (Fixa konsollen)
Högerklicka på titelraden för konsollfönstret, välj Properties/Egenskaper.
Gå till Font, sätt den till "Lucida Console", tryck OK och välj att det ska gälla alla fönster.
Lösning 2a: (Fungerar endast i WinNT/2K/XP)
Lägg till i din kod:
#include <windows.h>
och lägg till detta i början av main:
SetConsoleOutputCP(1252);
Lösning 2b:
Skriv i konsollen: (detta måste göras varje gång du startar en ny konsoll, men det går att lösa genom att skapa en genväg till "cmd.exe /c chcp 1252")
Om du kör WinNT/2K/XP:
chcp 1252
Om du kör Win9X:
mode con cp select=1252
Dock så fungerar varken 2a eller 2b särskilt bra om man inte har satt fonten till Lucida Console.
Trolololo