# Umlaute auf Konsole darstellen



## Schormi (14. Mai 2012)

Hallo,

Ich möchte Umlaute und Sonderzeichen auf der Konsole darstellen.

und zwar habe ich einen string in einem char array der sich variabel ändern kann.

also z.b. steht in fall 1 in dem string: Die Rückgabe war erfolgreich.

und z.b. in fall zwei: Das Ergebnis war ähnlich.

und so weiter...  warn nur beispiele.

nun suche ich eine möglich keit wie ich die Umlaute(ä,ö,ü...) ausgeben kann. Wahrscheinlich durch Umwandlung in Unicode(UTF8).
Sprache C++ in Visual Studio 2010

danke schonmal für hilfe,
ein programmier anfänger


----------



## deepthroat (14. Mai 2012)

Hi.

Standardmäßig wird auf der Konsole die OEM 850 Codepage eingesetzt.

Die einfachste Methode wäre, wenn du deine Quelltext auch in diesem Zeichensatz abspeicherst.

Gruß


----------



## Schormi (14. Mai 2012)

hi, danke für den Tipp

ist jetzt vielleicht eine dumme frage aber wie mache ich das eigentlich?


----------



## deepthroat (14. Mai 2012)

Schormi hat gesagt.:


> hi, danke für den Tipp
> 
> ist jetzt vielleicht eine dumme frage aber wie mache ich das eigentlich?


In Visual Studio: Menü File -> Advanced Save Options... -> Encoding

Gruß


----------



## Schormi (14. Mai 2012)

ok, scheint zu funktionieren, in einem Testprogramm gibt er mir die Umlaute normal aus, allerdings habe ich eine Client-Server verbindung die als Antwort ein Char-array bekommt, habe die gleiche Codepage wie in dem Testprojekt eingestellt aber hier werden die Umlaute nicht angezeigt.

eventl. fehler im code? funktioniert aber eigentlich soweit.


```
rc = send(s,buf,150,0);  //Socket,buffer,länge,flags:würde die ersten zeichen aus dem buffer senden (100)

		if(rc==0)
		{ 
			printf("Server hat die Verbindung getrennt..\n"); 
		}
	
		if(rc==SOCKET_ERROR) 
		{ 
			printf("Fehler: recv, fehler code: %d\n",WSAGetLastError()); 
		}
	
		rc = recv(s,buf,1000,0); //es werden 355 zeichen empfangen oder weniger die empf. zeichen stehn in rc

	
		if(rc==SOCKET_ERROR) 
		{ 
			printf("Fehler: recv, fehler code: %d\n",WSAGetLastError()); 
		}

		buf[rc] ='\0'; //hinter dem letzten empfangenem byte \0 setzen

		cout << buf;
```


----------



## deepthroat (14. Mai 2012)

Was ist das denn für ein Server?

Welches Encoding verwendet der Server?


----------



## Schormi (14. Mai 2012)

Also laut der kurzen doku:

Port=5016
UnicodePort=5017

mehr steht leider nicht dabei
habe beide Ports ausprobiert, könnte jetzt natürlich fast alle codepages mal durchprobieren obs geht aber naja vll gehts ja auch anders...
gibts da keine umwandel funktion, so wie in C# z.b.:
System.Text.UnicodeEncoding.Unicode.GetBytes(text)


----------



## deepthroat (14. Mai 2012)

Wenn man weiß welches Encoding verwendet wird, dann kann man auch in ein anderes Encoding umwandeln.

Unicode ist kein Encoding, es ist ein Standard für Zeichencodes. Kodierungen wären UTF-8, UTF-16 LE, UTF-32 usw.

Gruß


----------

