PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie den Zeichensatz vorgeben?



nobody0
15-11-2004, 21:00
Wie kann man bei einem Programm, beispielsweise einem C-Programm, den Zeichensatz vorgeben? :confused:

Wenn ich Daten z. B. als CSV (comma separated values) in Dateien abspeichere, dann soll das immer in demselben Format sein (IBM-ASCII, wie man es schon seit MS-DOS 2.x kennt und nur ein Zeilenendzeichen (Unix-Zeilenende)).
Einfach nur Zeichen auszugeben reicht ja nicht, denn selbst wenn der Sprachstandard vorschreibt, dass sowas wie UTF8 verboten ist, hat man das Problem, dass statt IBM-ASCII auch EBCDIC oder eine der anderen ASCII-Varianten verwendet werden kann.

Dass das Zeilenende Plattform-abhängig ist, kann man ja einfach durch Ausgabe von 0xa statt '\n' beseitigen, aber wie bekommt man das beim Zeichensatz hin? :confused:

Wichtig ist das, weil gespeicherte Daten auf verschiedenen Plattfomen erzeugt/verarbeitet werden sollen.

wraith
15-11-2004, 21:58
man dd (http://www.hmug.org/man/1/dd.html)
Unnötig das alles in ein Programm zu verwursten.

nobody0
17-11-2004, 22:12
dd hilft nicht; ich brauche das Plattformunabhängig.

Ich mache es nun so wie mit dem Check von __STDC_IEC_559__ um IEEE754/IEC60559-Konformität garantiert zu haben; ich teste einfach die Nicht-Steuerzeichen:



#ifndef _IBM_ASCII_H
# define _IBM_ASCII_H

...
# if ('a' != 97 )
# error "Character 'a' is not IBM-ASCII coded!"
# endif
...
# if ('0' != 48 )
# error "Character '0' is not IBM-ASCII coded!"
# endif
...
# if ('A' != 65 )
# error "Character 'A' is not IBM-ASCII coded!"
# endif

#endif // _IBM_ASCII_H



Wichtig sind noch die Umlaute, denn die sind z. B. auf Mac anders; da muß man sowas wie mac2unix zum Konvertieren nehmen. ;)