Terminal - C Programmierung - ASCII Code > 127
-
Grüß euch!
Ich wollte mal fragen, wie man mit C den ASCII Code über 127 im Terminal ausgibt.
Ich benutzte Debian mit Wheezy.
Wenn ich jetzt z.b.:printf("%c",300);
schreibe und dass dann im Terminal ausführe kommt ein '?'.
Ich bräuchte aber die ASCII Zeichen > 127, da ich ein kleines Terminal spiel Programmieren will, aber ohne Sonderzeichen, schaut dass dann ein bisschen blöd aus
Falls ihr fragt welche:
http://www.torsten-horn.de/img/ascii.gif
Links untere 4tel, 4.,5. Reiheich hoffe ich konnte euch das Problem genau beschreiben
weini
Am besten wäre natürlich, wenn man dass mit einen system(); Befehl machen kann, muss aber nicht sein
-
ASCII hat nur 128 Zeichen (0-127). Du meinst Extended ASCII.
edit: Siehe dazu hier: http://en.wikipedia.org/wiki/Extended_ASCII
Schau dir am besten die Antwort von ruediger hier an:
http://www.c-plusplus.net/forum/p2249365#2249365(Oder du verwendest gleich (n)curses.)
-
Es gibt keine ASCII-Zeichen über 127; ASCII ist eine 7-Bit-Kodierung. Das Bild, das du verlinkst, zeigt Codepage 850, und ich habe meine Zweifel, dass dein Terminal unter Debian die benutzt.
-
ja ich verbinde den ASCII Code und den eASCII Code immer gerne
Sorry für die Verwirrung, aber ich kann ja z.b. '186' (Zwei Senkrechte Striche) nicht ausgeben, obwohl ich es brauche.Der Link von nman, wo einer %lc verwendet, geht auch nicht.
Wie kann ich in C Unicode verwenden?
-
weini37 schrieb:
Der Link von nman, wo einer %lc verwendet, geht auch nicht.
Das ist keine sehr gute Fehlerbeschreibung. Was passiert denn genau?
Wie kann ich in C Unicode verwenden?
Mit %lc und den Werten in der von rüdiger geposteten Tabelle?
-
Also wenn ich jetzt z.b.
printf("Hallo%lc\n Hi",0xfa);
mache, sollte ja der Output:
Hallo<Punkt in der Mitte>
Hisein oder?
bei mir ist der Output:Hallo
mehr nicht.
-
Wer sagt, dass es das sein sollte? Über 127 hängen die Zeichen von dem verwendeten Zeichensatz ab. Auf modernen Systemen wird heute dafür durchgehen UTF-8 eingesetzt und nicht irgend ein veralteter DOS-Zeichensatz. MIDDLE DOT ist in UTF-8 zB 0xC2 0xB7
Siehe auch
- Wikipedia: Unicode, UTF-8
- The Unicode Consortium
- UTF-8 and Unicode FAQ for Unix/Linux
- [url=http://www.joelonsoftware.com/articles/Unicode.html]The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
by Joel Spolsky[/url] - UTF-8 Everywhere
- C++.de-Magazin Einführung in Codepages und Unicode (ist aber eher Windows spezifisch)
-
Ok danke Jetzt funktionierts
-
doppelpost
-
rüdiger schrieb:
- [url=http://www.joelonsoftware.com/articles/Unicode.html]The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
by Joel Spolsky[/url]
Das sollte wirklich Pflichtlektüre für ITler sein .
- [url=http://www.joelonsoftware.com/articles/Unicode.html]The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
-
ASCII standard is nur 128 lange(1 BYTE).
So char ist 1BYTE. (01111111=127)Aber ASCII extended is 255 lange.
Du kannst bis 255 schreiben, wenn deiner char 'unsigned' erklarst.
Aber ich dich sage: Die extra 128 chars, habe kein wichting oder nutzlich char.
Auch glaube ich, dass du der 'w_char' datatype musst verwenden.
Bin ich falsch ?
-
esgol schrieb:
Bin ich falsch ?
Ja.
Auch für dich: http://www.joelonsoftware.com/articles/Unicode.html
-
Lool.
Ich spreche auf der standard C. Ich weiss fur die Unicode.
-
esgol schrieb:
Ich weiss fur die Unicode.
Das heißt, du erzählst hier absichtlich Unsinn? Troll?
-
Nein kein Troll.
In eine standard C code, ohne welche include du kannst nicht unicode verwenden.
(Ich spreche nicht fur C++11-0x)char ist immer ein Byte. Das ist keine unsinn.
-
esgol schrieb:
In eine standard C code, ohne welche include du kannst nicht unicode verwenden.
Das ist Unsinn. Unicode bedeutet nicht gleich Wide-Character-Codierung. Es gibt auch Multibyte-Codierungen, die für Standard-C und C++ völlig transparent sind.
esgol schrieb:
char ist immer ein Byte.
Aber char ist nicht immer ein Zeichen.
-
Ich wisse nur dass... wenn ich Griechisch zeichene in eine char z.B. char x=φ screiben, ?#?#?#?#?# nach ein printf die Console zeige werde :p
-
esgol schrieb:
Ich wisse nur dass... wenn ich Griechisch zeichene in eine char z.B. char x=φ screiben, ?#?#?#?#?# nach ein printf die Console zeige werde :p
φ passt nicht in char. Wie gesagt, ein char ist nicht immer ein Zeichen. Bei Multibyte-Codierungen brauchst du für solche Zeichen eben mehr als ein char. Als String sollte das funktionieren. Dein Editor und deine Konsole müssen sich natürlich über die Codierung einig sein.
Lies http://www.joelonsoftware.com/articles/Unicode.html. Wirklich. Deine Aussagen hier zeigen, dass da einiges drinsteht, das du noch nicht weißt.
-
Der OP hast 'ASCII Code > 127' gefragt aber nicht uder die Unicode.
So habe ich nur das geantwortet. Hast du etwas uber die Unicode in meinem post gesehen?
Ich kenne nicht viele uber die Unicode im C++.
Was ist deine Problem? Welche is der Troll jetz?
Sehr seltsam Benehmen fur einen member Zehn jahre alt.
Da Frende ich bin und da nicht gut Deutsch ich spreche , hast du problem?
Ich frage weil ich auch einmal probleme im Franzosisch websiten gehabt habe...
P.S.
Aber danke fur der chat. Ich habe meinem Deutsch wenig erlebt. Danke Schon
-
@esgol
Es ist zwar nett, dass du versuchst hier zu helfen. Aber leider hast du das Thema selbst nicht ganz verstanden. Der Thread wurde schon längst beantwortet und das Problem geklärt. Du kannst dir gerne die Antworten hier durchlesen und selbst versuchen draus zu lernen. Siehe zB meine Antwort und die zahlreichen Links: http://www.c-plusplus.net/forum/p2260365#2260365Closed