<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Unicode Frage?]]></title><description><![CDATA[<p>Hallo Leute ich habe ein kleines Verständnis Problem im Punkte C++ unter dem g++ 4.3.3</p>
<p>Und zwar folgendes</p>
<pre><code class="language-cpp">const char * a = &quot;äüöß&quot;;
 printf(&quot;%s&quot;,a);
</code></pre>
<p>Die Ausgabe lautet äüöß<br />
Ich verstehe nur nicht warum das klappt.<br />
Eigentlich sollte unicode unterstützung doch unter wchar_t laufen und nicht schon unter char. Habe ich da etwas nicht mitbekommen. Oder habe ich grade einen Denkfehler und das hat schon immer geklappt</p>
<p>Vielen dank schon mal für eure Antworten</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/255848/unicode-frage</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 19:58:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/255848.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 04 Dec 2009 12:26:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unicode Frage? on Fri, 04 Dec 2009 12:26:29 GMT]]></title><description><![CDATA[<p>Hallo Leute ich habe ein kleines Verständnis Problem im Punkte C++ unter dem g++ 4.3.3</p>
<p>Und zwar folgendes</p>
<pre><code class="language-cpp">const char * a = &quot;äüöß&quot;;
 printf(&quot;%s&quot;,a);
</code></pre>
<p>Die Ausgabe lautet äüöß<br />
Ich verstehe nur nicht warum das klappt.<br />
Eigentlich sollte unicode unterstützung doch unter wchar_t laufen und nicht schon unter char. Habe ich da etwas nicht mitbekommen. Oder habe ich grade einen Denkfehler und das hat schon immer geklappt</p>
<p>Vielen dank schon mal für eure Antworten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1817794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1817794</guid><dc:creator><![CDATA[Cefour]]></dc:creator><pubDate>Fri, 04 Dec 2009 12:26:29 GMT</pubDate></item><item><title><![CDATA[Reply to Unicode Frage? on Fri, 04 Dec 2009 12:27:30 GMT]]></title><description><![CDATA[<p><a href="http://en.wikipedia.org/wiki/UTF-8" rel="nofollow">UTF-8</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1817798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1817798</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Fri, 04 Dec 2009 12:27:30 GMT</pubDate></item><item><title><![CDATA[Reply to Unicode Frage? on Fri, 04 Dec 2009 12:31:19 GMT]]></title><description><![CDATA[<p>Hallo rüdiger!<br />
So char ist 1 Byte lang<br />
für UTF8 benötige ich mehr BYTES (bis zu 4 BYTES). Soweit so gut. Geht der Compiler mittlerweile hin unterstützt in einem Char Array jetzt auch UTF8 Zeichen. D.h das er für ein ä z.B 3 BYTES allokiert? Und braucht man dann noch wchar_t und ist dies mittlerweile Standartverhalten bei den Compilern oder nur G++ spezifisch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1817800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1817800</guid><dc:creator><![CDATA[Cefour]]></dc:creator><pubDate>Fri, 04 Dec 2009 12:31:19 GMT</pubDate></item><item><title><![CDATA[Reply to Unicode Frage? on Fri, 04 Dec 2009 12:40:40 GMT]]></title><description><![CDATA[<p>Also normal ist das tatsächlich nicht. Wahrscheinlich ist das aber eine C und keine C++ Fähigkeit? Ich kenne mich mit C nicht aus. Vielleicht muß man explizit dem Compiler die C-Fähigkeit verbieten, wenn man C++ haben will? Oder es ist einfach ein Bug? (auch die GCC-Entwickler werden sicherlich Fehler machen) Es könnte aber auch einfach nur eine GCC-spezische Erweiterung sein, so wie es auch MS gerne hin und wieder in ihre Compiler verbaut. Oder es ist einfach kein UTF-8, sondern einfach nur zufällig die richtige <a href="http://de.wikipedia.org/wiki/Codepage" rel="nofollow">Codepage</a>? Weil da brauchst du auch nur 8 bit, um Sonderzeichen korrekt darzustellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1817803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1817803</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 04 Dec 2009 12:40:40 GMT</pubDate></item><item><title><![CDATA[Reply to Unicode Frage? on Fri, 04 Dec 2009 12:39:12 GMT]]></title><description><![CDATA[<p>Normal wirklich nicht. Kann jemand das mal unter Visual Studio unter Windows testen ich besitze kein Windows.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1817804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1817804</guid><dc:creator><![CDATA[Cefour]]></dc:creator><pubDate>Fri, 04 Dec 2009 12:39:12 GMT</pubDate></item><item><title><![CDATA[Reply to Unicode Frage? on Fri, 04 Dec 2009 12:43:30 GMT]]></title><description><![CDATA[<p>Cefour schrieb:</p>
<blockquote>
<p>Normal wirklich nicht. Kann jemand das mal unter Visual Studio unter Windows testen ich besitze kein Windows.</p>
</blockquote>
<p>Ich kann dir sagen, das <code>const char*</code> unter MSC definitiv kein UTF-8 ist! Aber die Zeichen werden richtig dargestellt, <em>wenn</em> man die korrekte Locale in der C++-Runtime und Codepage in der Konsole eingestellt hat. Ganz einfach. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> Es gab mal dazu hier einen ellen langen Thread, wo das geklärt wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1817807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1817807</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 04 Dec 2009 12:43:30 GMT</pubDate></item><item><title><![CDATA[Reply to Unicode Frage? on Fri, 04 Dec 2009 13:00:54 GMT]]></title><description><![CDATA[<p>Auf welches Dateiformat ist denn dein Texteditor (in dem du den C++-Sourcecode eingibst) eingestellt? Wenn der auf UTF-8 eingestellt ist, kann es sein, das die Linux-Konsole ebenfalls auf UTF-8 eingestellt ist.</p>
<p>Gib mal die Länge deines Strings aus! Der ist wahrscheinlich in einem ASCII-Editor ziemlich kryptisch... halt UTF-8 kodiert. Und dann passt die Ausgabe auf der Konsole. Aber alles reiner Zufall, das dieser eine Fall funktioniert.</p>
<p>Semantisch ist das ganze natürlich totaler Quatsch, in einem ASCII/ANSI-String UTF-8-zeichen zu speichern. Da würde ich eher einen <code>const unsigned short*</code> dafür nehmen... wenn es kein <code>wchar_t</code> sein sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1817822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1817822</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 04 Dec 2009 13:00:54 GMT</pubDate></item><item><title><![CDATA[Reply to Unicode Frage? on Fri, 04 Dec 2009 14:01:59 GMT]]></title><description><![CDATA[<p>Das wird es wohl sein. Die sache hat mich nur ein bisschen irritiert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1817864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1817864</guid><dc:creator><![CDATA[Cefour]]></dc:creator><pubDate>Fri, 04 Dec 2009 14:01:59 GMT</pubDate></item><item><title><![CDATA[Reply to Unicode Frage? on Fri, 04 Dec 2009 15:34:41 GMT]]></title><description><![CDATA[<p>Cefour schrieb:</p>
<blockquote>
<p>Normal wirklich nicht. Kann jemand das mal unter Visual Studio unter Windows testen ich besitze kein Windows.</p>
</blockquote>
<p>Ausgabe mit Visual Studio 2005 und MinGW 4.4.0: &quot;õ³÷¯&quot;. Das liegt allerdings eher an der Shell, die eine etwas seltsame Codepage verwendet. Konvertiert man den String mit CharToOem() (des Win-API), wird der ursprüngliche String ausgegeben. sizeof(&quot;äüöß&quot;) ergibt 4.</p>
<p>Insgesamt glaube ich, dass es an der eingestellten bzw. verwendeten Codepage liegt. Allerdings wohl eher nicht an der des erstellten Programms, sondern an der, die der Compiler verwendet?</p>
<p>Vielleicht interessant in diesem Zusammenhang. Schreibt man dies:</p>
<pre><code class="language-cpp">wchar_t *a = L&quot;äüöß&quot;;
std::wcout &lt;&lt; a &lt;&lt; std::endl;
</code></pre>
<p>so schluckt Visual Studio den String ohne Murren (und verwendet ihn korrekt), während GCC folgende Fehlermeldung zeigt:</p>
<pre><code>converting to execution character set: Illegal byte sequence
</code></pre>
<p>Stefan.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1817908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1817908</guid><dc:creator><![CDATA[DStefan]]></dc:creator><pubDate>Fri, 04 Dec 2009 15:34:41 GMT</pubDate></item><item><title><![CDATA[Reply to Unicode Frage? on Fri, 04 Dec 2009 16:29:51 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Semantisch ist das ganze natürlich totaler Quatsch, in einem ASCII/ANSI-String UTF-8-zeichen zu speichern. Da würde ich eher einen <code>const unsigned short*</code> dafür nehmen... wenn es kein <code>wchar_t</code> sein sein.</p>
</blockquote>
<p>Sorry, aber das ist doch Unsinn. Natürlich sind UTF-8 Literale in C/C++-Code keine gute Idee, eben weil nicht sichergestellt ist, daß beispielsweise Editor und Konsole die selbe Codierung verwenden. Der Compiler selbst kümmert sich darum gar nicht erst.<br />
Aber <code>char*</code> ist prinzipiell schon genau der richtige Typ für UTF-8 Strings. Was sollte denn <code>unsigned char*</code> bringen (abgesehen davon, daß das so nicht geht)? Wofür steht denn die 8 in UTF-8? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1817940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1817940</guid><dc:creator><![CDATA[dooooomi]]></dc:creator><pubDate>Fri, 04 Dec 2009 16:29:51 GMT</pubDate></item><item><title><![CDATA[Reply to Unicode Frage? on Fri, 04 Dec 2009 17:49:12 GMT]]></title><description><![CDATA[<p>ich hoffe mal, euch ist bewusst, dass bereits in der normalen 8-Bit-ANSI Kodierung mit deutscher Codepage ä, ö, ü und ß enthalten sind...</p>
<p>siehe <a href="http://en.wikipedia.org/wiki/Code_page_858" rel="nofollow">hier</a><br />
so ähnlich findet man das auch in deutschen Tafelwerken <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
<p>und da C/C++ nunmal nicht Standard-ASCII, sondern eben ANSI verwendet,<br />
gibt das auf deutschen Systemen keine Fehler <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1817971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1817971</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Fri, 04 Dec 2009 17:49:12 GMT</pubDate></item></channel></rss>