|
| øæå i c++ Fra : Anders Lund |
Dato : 04-10-02 20:06 |
|
Hvorfor kan jeg ikke med std.cout << "æøå" få æøå ud på skræmen? og hvad
gør jeg for at fixe det?
Jeg bruger Borland C++Builder Command Line Tools 5.5 til at compile med.
--
Mvh
Anders Lund
Anders@zaimGED.dk
Fjern geden fra min signatur!
| |
Bertel Lund Hansen (04-10-2002)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 04-10-02 22:25 |
|
Anders Lund skrev:
>Hvorfor kan jeg ikke med std.cout << "æøå" få æøå ud på skræmen? og hvad
>gør jeg for at fixe det?
Det er ikke et C++-problem, men et DOS-problem. DOS kører med et
specielt tegnsæt når man kommer over kode 127.
>Jeg bruger Borland C++Builder Command Line Tools 5.5 til at compile med.
Det gør jeg også, men jeg har installeret et genialt program,
MED, som har nem omskiftning mellem Windows' tegnsæt og DOS'.
Desuden har det indbygget support for 32 filformater med
syntaksfarvning, heriblandt naturligvis C og C++..
Hvis du bare vil lave omregningerne selv, kan du udskrive DOS'
tegnsæt med det her program:
#include <stdio.h>
int main() {
int n, c;
for (n=32; n<255; ++n) printf("%4d %c ",n,n);
return 0;
}
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
| |
Mads Orbesen Troest (12-10-2002)
| Kommentar Fra : Mads Orbesen Troest |
Dato : 12-10-02 01:26 |
|
> Det er ikke et C++-problem, men et DOS-problem. DOS kører med et
> specielt tegnsæt når man kommer over kode 127.
Æhm... Jeg vil snarere sige, "det er hverken et C++ eller DOS problem, men
et codepage problem". Der er ingen standard for ASCII karakterer over 127 -
eller rettere, der er stakkevis, alle forskellige. Windows folk tror ganske
ofte at deres ISO-8859-1 er standard, og det er det også på vestlige (!)
Windows systemer, men ikke andre steder. Så snart man anvender andet end
US-ASCII binder man sig til en codepage. Derfor er den fede løsning at bruge
Unicode internt i stedet (og "eksternt" også, selvfølgelig, hvis systemet
understøtter det direkte), og ellers transcode til/fra den codepage
programmet afvikles under.
/\/\\ads Orbesen Troest
| |
Bertel Lund Hansen (12-10-2002)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 12-10-02 09:10 |
|
Mads Orbesen Troest skrev:
>Windows folk tror ganske ofte at deres ISO-8859-1 er standard
Hvis vi skal være pedanter, så er Windows' default tegnsæt ikke
et ISO-tegnsæt. Det har ganske vist alle ISO's tegn med, men det
har derudover benyttet koder som ikke er defineret i ISO-8859-1.
Det er endda så grelt med denne misforståelse at man kan finde
sider på nettet der gengiver Windows' tegnsæt under overskriften
ISO-8859-1 endda selv om nogen har skrevet og gjort opmærksom på
fejlen.
Man kan ovenikøbet se nogen der stoler så meget på deres tegnsæt
at de slet ikke erklærer det i deres headere.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
| |
Flare (12-10-2002)
| Kommentar Fra : Flare |
Dato : 12-10-02 20:45 |
|
Nu kunne jeg kun se 2 replyes så jeg ved ikke om der er kommet en løsning
tidligere..men
æ = \x91 Æ = \x92
ø = \x9B Ø = \x9D
å = \x86 Å = \x8F
Sæt disse koder ind i din output stream og du er kørende
cout << "hal\x9Bjsa" giver haløjsa
Anders
| |
Mads Orbesen Troest (12-10-2002)
| Kommentar Fra : Mads Orbesen Troest |
Dato : 12-10-02 21:02 |
|
> æ = \x91 Æ = \x92
> ø = \x9B Ø = \x9D
> å = \x86 Å = \x8F
>
> Sæt disse koder ind i din output stream og du er kørende
Nej, at hævde at man så er kørende er en voldsom simplificering. Det er et
workaround som stadig ikke addresserer det grundlæggende problem:
forskellige codepages. Du har blot hardcoded disse non-US-ASCII tegn til en
anden codepage (den, som (vestlige) Windows-systemer anvender i konsollerne.
Hvis du er helt sikker på at dit program aldrig skal afvikles på andre
codepages, så kan du jo vælge at leve med det. Men hvis nu nogen sinde skal
porte det til noget som helst andet, så får du garbage de steder du har
anvendt ÆØÅ.
/\/\\
| |
Flare (13-10-2002)
| Kommentar Fra : Flare |
Dato : 13-10-02 11:44 |
|
Men hvis nu nogen sinde skal
> porte det til noget som helst andet, så får du garbage de steder du har
> anvendt ÆØÅ.
Korrekt. Men som jeg (igen af de to replyes jeg kunne se) kunne få ud af
det, handlede problemet om DOS. Og så er problemet løst.
Mvh
Anders
| |
R. A. Larsen (05-10-2002)
| Kommentar Fra : R. A. Larsen |
Dato : 05-10-02 02:26 |
|
In article <3d9de67f$0$69033$edfadb0f@dspool01.news.tele.dk>, Anders Lund
wrote:
>
> Hvorfor kan jeg ikke med std.cout << "æøå" få æøå ud på skræmen? og hvad
> gør jeg for at fixe det?
>
>
> Jeg bruger Borland C++Builder Command Line Tools 5.5 til at compile med.
Hvad sker der? Hvis du får mærkelige tegn på skærmen i stedet for 'æøå', er
det sikkert fordi du bruger Windows-tegnsættet i en DOS prompt (eller
omvendt).
Hvis du opretter en text fil i NotePad og indlæser den i en DOS editor
(eller omvendt), ser du at 'æøå' i det ene program giver underlige tegn i
det andet (og omvendt).
Hilsen, René
| |
Trygleren (05-10-2002)
| Kommentar Fra : Trygleren |
Dato : 05-10-02 11:25 |
|
> Hvad sker der? Hvis du får mærkelige tegn på skærmen i stedet for 'æøå',
er
> det sikkert fordi du bruger Windows-tegnsættet i en DOS prompt (eller
> omvendt).
Øøøh... hva?!? Hvordan er det lige man bruger DOS-tegnsæt i en
Windowsprompt? =)
--
"Sic gorgiamus allos subjectatos nunc"
Lars 'Trygleren' Winther
| |
|
|