<?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&#x2F;Multi-Byte?]]></title><description><![CDATA[<p>Tag, ich hab mal ne Frage über Sonderzeichen.<br />
Und zwar habe ich das korrekt verstanden?:<br />
L&quot;aö&quot;<br />
würde 4 Bytes, nämlich 2 wchar_ts benutzen<br />
und &quot;aö&quot; würde 3 Bytes, nämlich 3 chars benutzen? Oder wie ist das alles zu verstehen?<br />
Also:<br />
Wenn L für Widestring steht und Widestring für Sonderzeichen, wieso ist es dann möglich in einem normalen String Sonderzeichen zu verwenden?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/224332/unicode-multi-byte</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 13:14:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/224332.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 08 Oct 2008 12:19:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unicode&#x2F;Multi-Byte? on Wed, 08 Oct 2008 12:19:23 GMT]]></title><description><![CDATA[<p>Tag, ich hab mal ne Frage über Sonderzeichen.<br />
Und zwar habe ich das korrekt verstanden?:<br />
L&quot;aö&quot;<br />
würde 4 Bytes, nämlich 2 wchar_ts benutzen<br />
und &quot;aö&quot; würde 3 Bytes, nämlich 3 chars benutzen? Oder wie ist das alles zu verstehen?<br />
Also:<br />
Wenn L für Widestring steht und Widestring für Sonderzeichen, wieso ist es dann möglich in einem normalen String Sonderzeichen zu verwenden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1595503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1595503</guid><dc:creator><![CDATA[...]]></dc:creator><pubDate>Wed, 08 Oct 2008 12:19:23 GMT</pubDate></item><item><title><![CDATA[Reply to Unicode&#x2F;Multi-Byte? on Wed, 08 Oct 2008 13:23:35 GMT]]></title><description><![CDATA[<p>aö können auch 3 wchar_t's sein. (a + o + combining diaresis) Willkommen in der Welt von Unicode. <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>WideString steht nicht für Sonderzeichen.</p>
<p>Nicht-ASCII-Zeichen in einem normalen String sind erstmal völlig legal. Es hängt halt komplett von deiner Kodierung ab. Du kannst auch UTF-8 in einem normalen String speichern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1595546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1595546</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Wed, 08 Oct 2008 13:23:35 GMT</pubDate></item><item><title><![CDATA[Reply to Unicode&#x2F;Multi-Byte? on Wed, 08 Oct 2008 16:42:33 GMT]]></title><description><![CDATA[<p>L&quot;aö&quot;<br />
== 3*wchar_t ('ä', 'ö', '\0')<br />
wchar_t ist unter windows 2 byte lang und unter unix 4</p>
<p>&quot;aö&quot;<br />
im deutschen ASCII-code 3 chars ('a', 'ö', '\0')<br />
in anderen ASCII-codes 3 chars ('a', '?', '\0')</p>
<p>In einem normalen String kann man den für sein Land spezifischen ASCII-Code packen...<br />
bis 2^7 ist das weltweit(?) kompatibel - ab dann musst du (ziemlich aufwendig) umwandeln...</p>
<p>wenn dein programm also auf einem russischen os läuft, dann wird das mit ä,ö,ü,ß,... nichts mehr - dann musst du auf wchar_t setzen, also std::wstring...</p>
<p>falls du mehr wissen willst:<br />
nach &quot;UCS&quot; bzw &quot;UTF&quot; googlen (bzw direkt bei wikipedia suchen)<br />
oder du suchst hier im forum - ist auch eine immer wiederkehrende frage bzw problem ^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1595704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1595704</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 08 Oct 2008 16:42:33 GMT</pubDate></item><item><title><![CDATA[Reply to Unicode&#x2F;Multi-Byte? on Thu, 09 Oct 2008 07:23:52 GMT]]></title><description><![CDATA[<p>Im übrigen ist L&quot;aö&quot; sowieso etwas völlig implementierungsabhängiges, da ö nicht zum Standard C++ Character Set gehört. Wenn sollte man das ö in dem Encoding escapen, in dem man es haben will.</p>
<p>unskiled schrieb:</p>
<blockquote>
<p>wenn dein programm also auf einem russischen os läuft, dann wird das mit ä,ö,ü,ß,... nichts mehr - dann musst du auf wchar_t setzen, also std::wstring...</p>
</blockquote>
<p>Eben nicht. Es ist ein Trugschluss, dass std::wstring respektive wchar_t Ecnoding-Probleme löst. UTF-8 kann und sollte man eher in einem normalen Character-Array bzw. std::string ablegen. C++ kennt weder irgendwelche Formen von Encoding noch Unicode direkt, auch wenn man es den Streams beibringen kann. Vor der Ausgabe muss man das Encoding auf das des Ausgabemediums anpassen.<br />
Und wenn auf einem russischen OS ein Character-Literal mit L&quot;aö&quot; kompiliert wird, kommt vermutlich auch nur Mist bei raus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596017</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Thu, 09 Oct 2008 07:23:52 GMT</pubDate></item><item><title><![CDATA[Reply to Unicode&#x2F;Multi-Byte? on Thu, 09 Oct 2008 15:38:32 GMT]]></title><description><![CDATA[<p>7H3 N4C3R schrieb:</p>
<blockquote>
<p>Eben nicht. Es ist ein Trugschluss, dass std::wstring respektive wchar_t Ecnoding-Probleme löst. UTF-8 kann und sollte man eher in einem normalen Character-Array bzw. std::string ablegen.</p>
</blockquote>
<p>Quelle?</p>
<p>7H3 N4C3R schrieb:</p>
<blockquote>
<p>C++ kennt weder irgendwelche Formen von Encoding noch Unicode direkt</p>
</blockquote>
<p>C++ kennt std::wstring! Und hier in dem Thread gings nicht um Encoding...</p>
<p>7H3 N4C3R schrieb:</p>
<blockquote>
<p>auch wenn man es den Streams beibringen kann. Vor der Ausgabe muss man das Encoding auf das des Ausgabemediums anpassen.</p>
</blockquote>
<p>Jopp - ich habe auch nie behauptet, dass beispielsweise die windows-console alles ausgeben könnte, was windows auch verarbeiten kann...</p>
<p>7H3 N4C3R schrieb:</p>
<blockquote>
<p>Und wenn auf einem russischen OS ein Character-Literal mit L&quot;aö&quot; kompiliert wird, kommt vermutlich auch nur Mist bei raus.</p>
</blockquote>
<p>Deshalb sollte er mal nach UCS googlen - damit er merkt, dass man nicht L&quot;äö&quot; schreibt sondern die Unicode-Codierung nutzen sollte... (U+....)</p>
<p>und wenn ich hier so was wie</p>
<blockquote>
<p>da ö nicht zum Standard C++ Character Set gehört</p>
</blockquote>
<p>lese... naja, lassen wir das...</p>
<p>hf</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596407</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 09 Oct 2008 15:38:32 GMT</pubDate></item><item><title><![CDATA[Reply to Unicode&#x2F;Multi-Byte? on Thu, 09 Oct 2008 15:48:39 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16305">@unskilled</a>,<br />
wchar_t garantiert kein Unicode! Es heisst einfach nur, dass man für ein Charackterzeichen 2, bzw. 4, Bytes hat. Welches Zeichen nun zu welchem Wert gehört, bestimmt auch bei wchar_t das aktuelle Locale.<br />
Es kann also sein, dass ein anderer Zeichensatz verwendet wird und dadurch der Wert von ä in Unicode ein völlig anderes Zeichen darstellt.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596417</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 09 Oct 2008 15:48:39 GMT</pubDate></item><item><title><![CDATA[Reply to Unicode&#x2F;Multi-Byte? on Thu, 09 Oct 2008 16:07:01 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>wchar_t garantiert kein Unicode! [...] Welches Zeichen nun zu welchem Wert gehört, bestimmt auch bei wchar_t das aktuelle Locale.</p>
</blockquote>
<p>quelle?<br />
wchar_t garantiert mir, dass ich einem bestimmten zahlenwert genau einen buchstaben zuordnen kann - nämlich den, den der unicode-standard vorschreibt... dieser standard ist aber wiederrum international... das heißt aber, dass hier ein U+00AE genau das selbe darstellt, wie auch in Timbuktu?!<br />
oder ist daran irgendwas falsch?</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596442</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 09 Oct 2008 16:07:01 GMT</pubDate></item><item><title><![CDATA[Reply to Unicode&#x2F;Multi-Byte? on Fri, 10 Oct 2008 08:28:00 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>und wenn ich hier so was wie</p>
<blockquote>
<p>da ö nicht zum Standard C++ Character Set gehört</p>
</blockquote>
<p>lese... naja, lassen wir das...</p>
</blockquote>
<p>Aha, und was ist damit?</p>
<p>unskilled schrieb:</p>
<blockquote>
<p>wchar_t garantiert mir, dass ich einem bestimmten zahlenwert genau einen buchstaben zuordnen kann - nämlich den, den der unicode-standard vorschreibt... dieser standard ist aber wiederrum international... das heißt aber, dass hier ein U+00AE genau das selbe darstellt, wie auch in Timbuktu?!<br />
oder ist daran irgendwas falsch?</p>
</blockquote>
<p>Quelle? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> (diese Zeile kann Spuren von Nüssen und Sarkasmus enthalten)</p>
<p>Du kannst auch wchar_t jeden anderen Zahlenwert zuordnen, auch einen den der Unicode-Standard nicht vorschreibt. Und das sogar, obwohl letzterer international ist.</p>
<p>Es ist wchar_t völlig egal, sowie C++ als solches auch, ob du darin Unicode ablegst oder eine Schweineborstenverwaltung damit umsetzt. Zumal es grob so um die 90000 zugeordnete Unicode-Characters gibt, da reicht ein wchar_t mit 2 Byte ja garnicht aus. Huch. Da braucht man ja plötzlich 2 von für einen Unicode-Character.<br />
Wenn du ein U+wxyz irgendwo ablegst, hast du es schon in höchstem Maße mit Encoding zu tun. Einmal hast du dich auf Unicode festgelegt, zum anderen wählst du z.B. UTF-8, UTF-16LE, UTF-16BE oder vielleicht UTF-32 als Kodierung aus, abhängig vom Datentyp der die Daten aufnimmt. Und für einen Unicodecharacter braucht man u.U. mehrere &quot;Characters&quot; des zugrundeliegenden Typ. Für ein Glyph braucht man u.U. nochmal mehr. wchar_t brauchst du im Zusammenhang mit Unicode nur, wenn du dich für eine Kodierung entscheidest, die Unicodecharacters in 2-Byte oder meinetwegen 4-Byte breiten &quot;Characters&quot; der zugrundeliegenden Repräsentation kodiert.</p>
<p>Im übrigen siehst du auch in Timbuktu mit &quot;\xC2\xAE&quot; (ohne L) ein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/00ae.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--registered"
      title=":registered:"
      alt="®"
    />, wenn man's in UTF-8 kodiert.</p>
<p>Vielleicht interessiert dich auch das hier (eine Quelle...):</p>
<p>ISO 14882 schrieb:</p>
<blockquote>
<p>2.13.2/5:</p>
<p>A universal-character-name is translated to the encoding, in the execution character set, of the character named. If there is no such encoding, the universal-character-name is translated to an implementation defined encoding. [Note: in translation phase 1, a universal-character-name is introduced whenever an actual extended character is encountered in the source text. Therefore, all extended characters are described in terms of universal-character-names. However, the actual compiler implementation may use its own native character set, so long as the same results are obtained.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1596701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596701</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Fri, 10 Oct 2008 08:28:00 GMT</pubDate></item><item><title><![CDATA[Reply to Unicode&#x2F;Multi-Byte? on Fri, 10 Oct 2008 10:18:45 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16305">@unskilled</a>,<br />
Ich kann dir keine Quelle geben, aus zwei Gründen:<br />
1. Ich habe keinen C++ Standard.<br />
2. Es gibt, nach meinen Informationen, nirgends im Standard die Erwähnung von Unicode.</p>
<p>Es wäre somit deine Aufgabe uns die Stelle im Standard zu zeigen, wo steht, dass wchar_t für Unicode zu verwenden sei.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596826</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 10 Oct 2008 10:18:45 GMT</pubDate></item><item><title><![CDATA[Reply to Unicode&#x2F;Multi-Byte? on Fri, 10 Oct 2008 10:28:24 GMT]]></title><description><![CDATA[<p>ISO/IEC 14882:2003 §3.9.1 schrieb:</p>
<blockquote>
<p>Type wchar_t is a distinct type whose values can represent distinct codes for all members of the largest<br />
extended character set specified among the supported locales (22.1.1). Type wchar_t shall have the same<br />
size, signedness, and alignment requirements (3.9) as one of the other integral types, called its underlying<br />
type</p>
</blockquote>
<p>Nichts mit Unicode...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596836</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 10 Oct 2008 10:28:24 GMT</pubDate></item><item><title><![CDATA[Reply to Unicode&#x2F;Multi-Byte? on Fri, 10 Oct 2008 11:34:09 GMT]]></title><description><![CDATA[<p>In der Praxis reicht die Plane 0 aber meist vollkommen aus, was mit <code>sizeof(wchar_t)&gt;=2</code> auf mindestens den populärsten Compilern für Desktopsysteme gegeben ist. Und das &quot;Problem&quot; der Combining Characters sollte imo nicht auf den Datentyp zurückfallen, solange du dich auf eine Normalization Form einigst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596885</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 10 Oct 2008 11:34:09 GMT</pubDate></item></channel></rss>