<?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[MemoBox: verschiedene charsets]]></title><description><![CDATA[<p>Hallo,<br />
ich benutze in einer Form eine MemoBox um mir dort die Ausgabe von einem Konsolenprogramm (z.B. ping) anzuzeigen, das ich mir CreateProcess starte.<br />
Damit die Umlaute in der Memobox korrekt angezeigt werden, habe ich den Zeichensatz der MemoBox auf OEM_CHARSET umgestellt.<br />
Nun ist es aber so, das wenn ich im Programm der MemoBox einen festen Text mit Lines-&gt;Add(&quot;äöü&quot;) hinzufügen will, diese Umlaute falsch dargestellt werden.</p>
<p>Gibt es eine Möglichkeit beide Texte mit Umlauten korrekt darzustellen?</p>
<p>Danke und Gruß<br />
Thomas</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/201140/memobox-verschiedene-charsets</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 02:33:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/201140.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 25 Dec 2007 10:57:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to MemoBox: verschiedene charsets on Tue, 25 Dec 2007 10:57:11 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich benutze in einer Form eine MemoBox um mir dort die Ausgabe von einem Konsolenprogramm (z.B. ping) anzuzeigen, das ich mir CreateProcess starte.<br />
Damit die Umlaute in der Memobox korrekt angezeigt werden, habe ich den Zeichensatz der MemoBox auf OEM_CHARSET umgestellt.<br />
Nun ist es aber so, das wenn ich im Programm der MemoBox einen festen Text mit Lines-&gt;Add(&quot;äöü&quot;) hinzufügen will, diese Umlaute falsch dargestellt werden.</p>
<p>Gibt es eine Möglichkeit beide Texte mit Umlauten korrekt darzustellen?</p>
<p>Danke und Gruß<br />
Thomas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425847</guid><dc:creator><![CDATA[Thomas_123]]></dc:creator><pubDate>Tue, 25 Dec 2007 10:57:11 GMT</pubDate></item><item><title><![CDATA[Reply to MemoBox: verschiedene charsets on Tue, 25 Dec 2007 12:32:16 GMT]]></title><description><![CDATA[<p>Das liegt einfach daran, daß die Umlaute in den verschiedenen Char-Sets sich an unterschiedlichen Position befinden, d.h. statt 'ä', 'ü', 'ö' etc. müßtest du halt den entsprechenden Char-Code verwenden: char(x) bzw. eine Konvertierungsfunktion schreiben.<br />
(Am besten, du schaust dir mal die Zeichen im Windows Zubehör Programm &quot;Zeichentabelle&quot; für den verwendeten Zeichensatz an).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425870</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Tue, 25 Dec 2007 12:32:16 GMT</pubDate></item><item><title><![CDATA[Reply to MemoBox: verschiedene charsets on Tue, 25 Dec 2007 15:05:59 GMT]]></title><description><![CDATA[<p>Danke, ich hab mir jetzt eine kleine Funktion geschrieben die dieses konvertiert:</p>
<pre><code class="language-cpp">void convertUmlToDosCharset(std::string &amp;strRef)
{
// Zeichen     DOS: Westeuropa   Windows: Westlich
// ä           0x84              0xE4
// Ä           0x8E              0xC4
// ö           0x94              0xF6
// Ö           0x99              0xD6
// ü           0x81              0xFC
// Ü           0x9A              0xDC
// ß           0xE1              0xDF
   unsigned int strLen;
   strLen = strRef.size();
   for (unsigned int i = 0; i &lt; strLen; i++)
   {
       if      (strRef[i] == 0xFFFFFFE4) strRef[i] = 0x84;
       else if (strRef[i] == 0xFFFFFFC4) strRef[i] = 0x8E;
       else if (strRef[i] == 0xFFFFFFF6) strRef[i] = 0x94;
       else if (strRef[i] == 0xFFFFFFD6) strRef[i] = 0x99;
       else if (strRef[i] == 0xFFFFFFFC) strRef[i] = 0x81;
       else if (strRef[i] == 0xFFFFFFDC) strRef[i] = 0x9A;
       else if (strRef[i] == 0xFFFFFFDF) strRef[i] = 0xE1;
   }
}
</code></pre>
<p>In der Windows-Zeichentabelle findet man aber nicht die Info mit den führenden 0xFF, wo kommen die denn her?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425956</guid><dc:creator><![CDATA[Thomas_123]]></dc:creator><pubDate>Tue, 25 Dec 2007 15:05:59 GMT</pubDate></item><item><title><![CDATA[Reply to MemoBox: verschiedene charsets on Wed, 26 Dec 2007 09:57:54 GMT]]></title><description><![CDATA[<p>Woher hast du denn die 8-stelligen Hexzahlen her? In einem std::string werden nur chars gespeichert (und diese sind auf den Windows-Systemen nur 8 Bit, dh. 1 Byte groß).</p>
<p>Also reicht:</p>
<pre><code class="language-cpp">if      (strRef[i] == 0xE4) strRef[i] = 0x84;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1426212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1426212</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Wed, 26 Dec 2007 09:57:54 GMT</pubDate></item><item><title><![CDATA[Reply to MemoBox: verschiedene charsets on Wed, 26 Dec 2007 12:51:41 GMT]]></title><description><![CDATA[<p>Th schrieb:</p>
<blockquote>
<p>Woher hast du denn die 8-stelligen Hexzahlen her? In einem std::string werden nur chars gespeichert (und diese sind auf den Windows-Systemen nur 8 Bit, dh. 1 Byte groß).</p>
<p>Also reicht:</p>
<pre><code class="language-cpp">if      (strRef[i] == 0xE4) strRef[i] = 0x84;
</code></pre>
</blockquote>
<p>Ja, das hab ich mir eigentlich auch gedacht. Als das aber nicht funktionierte, habe ich mir das einzelne Zeichen mittels sprintf(ch, &quot;%X&quot;, strRef[i]) in der Memobox ausgeben lassen, und dort erscheinen dann die 3 zusätzlichen Bytes. Die erscheinen jedoch nur bei den Umlauten, bzw. würden sonst führende Nullen nicht mit ausgegeben.<br />
Ich hab mich auch über die 4 Byte gewundert (d.h. in C ist für char ja nur die Mindestgröße von 1 Byte festgelegt).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1426285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1426285</guid><dc:creator><![CDATA[Thomas_123]]></dc:creator><pubDate>Wed, 26 Dec 2007 12:51:41 GMT</pubDate></item><item><title><![CDATA[Reply to MemoBox: verschiedene charsets on Wed, 26 Dec 2007 13:10:19 GMT]]></title><description><![CDATA[<p>Also so ein Programm:</p>
<pre><code class="language-cpp">std::string strText;
    char chText[200];
    strText = &quot;Text mit ä, ö und ü&quot;;
    for (int i = 0; i &lt; strText.size(); i++)
    {
        sprintf(chText, &quot;%d\t%c\t%x\t%d&quot;, i, strText[i], strText[i], sizeof(strText[i]));
        Memo1-&gt;Lines-&gt;Add(chText);
    }
</code></pre>
<p>erzeugt folgende Ausgabe in der Memo:</p>
<pre><code>0	T	54	1
1	e	65	1
2	x	78	1
3	t	74	1
4	 	20	1
5	m	6d	1
6	i	69	1
7	t	74	1
8	 	20	1
9	ä	ffffffe4	1
10	,	2c	1
11	 	20	1
12	ö	fffffff6	1
13	 	20	1
14	u	75	1
15	n	6e	1
16	d	64	1
17	 	20	1
18	ü	fffffffc	1
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1426294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1426294</guid><dc:creator><![CDATA[Thomas_123]]></dc:creator><pubDate>Wed, 26 Dec 2007 13:10:19 GMT</pubDate></item><item><title><![CDATA[Reply to MemoBox: verschiedene charsets on Thu, 27 Dec 2007 10:09:02 GMT]]></title><description><![CDATA[<p>Ach so, jetzt verstehe ich es.</p>
<p>Es liegt nur an der Ausgabe, da &quot;%x&quot; einen Integer erwartet. Und da ein String mit vorzeichenbehafteten Zeichen ([signed] char) arbeitet, werden negative Werte entsprechend des 2-Komplements so ausgegeben.</p>
<p>Aber für den Vergleich spielt das keine Rolle (und wie gesagt, du solltest es entfernen - für den Fall, daß du mit vorzeichenlosen Chars compilierst).</p>
<p>Alternativ könntest du bei der Ausgabe einfach die Parameter mittels static_cast&lt;unsigned char&gt;(...) angeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1426703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1426703</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Thu, 27 Dec 2007 10:09:02 GMT</pubDate></item></channel></rss>