<?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[WideCharToMultiByte probleme]]></title><description><![CDATA[<p>Moin,</p>
<p>ich wollte einen Unicode String in einen ISO 8859-1 String umwandeln. Alle Zeichen die nicht in der code page vorhanden sind sollen aus dem String herausfliegen. Ich habe das Ganze mit Hilfe der WideCharToMultiByte Funktion versucht. Das Problem ist nur, dass nach der Konvertierung der buffer leer ist. Alle Zeichen nach dem nicht erlaubten Zeichen verschwinden und nicht wie erwartet nur das unerlaubte Zeichen.</p>
<pre><code class="language-cpp">CString csTmp = _T(&quot;€test&quot;); // in der code page nicht vorhandenes Zeichen €
	char buffer[255];
	ZeroMemory(buffer, 255);
	BOOL b = TRUE;
	if(WideCharToMultiByte(28591, 0, csTmp, -1, buffer, 255, &quot;&quot;, &amp;b) == 0)
	{
		ASSERT(FALSE);
	}
</code></pre>
<p>Steht im csTmp &quot;bla€test&quot; dann ist nach der Konvertierung nur noch &quot;bla&quot; übrig.</p>
<p>Was mache ich verkehrt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/151540/widechartomultibyte-probleme</link><generator>RSS for Node</generator><lastBuildDate>Thu, 23 Jul 2026 11:37:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/151540.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 27 Jun 2006 10:49:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to WideCharToMultiByte probleme on Tue, 27 Jun 2006 10:49:27 GMT]]></title><description><![CDATA[<p>Moin,</p>
<p>ich wollte einen Unicode String in einen ISO 8859-1 String umwandeln. Alle Zeichen die nicht in der code page vorhanden sind sollen aus dem String herausfliegen. Ich habe das Ganze mit Hilfe der WideCharToMultiByte Funktion versucht. Das Problem ist nur, dass nach der Konvertierung der buffer leer ist. Alle Zeichen nach dem nicht erlaubten Zeichen verschwinden und nicht wie erwartet nur das unerlaubte Zeichen.</p>
<pre><code class="language-cpp">CString csTmp = _T(&quot;€test&quot;); // in der code page nicht vorhandenes Zeichen €
	char buffer[255];
	ZeroMemory(buffer, 255);
	BOOL b = TRUE;
	if(WideCharToMultiByte(28591, 0, csTmp, -1, buffer, 255, &quot;&quot;, &amp;b) == 0)
	{
		ASSERT(FALSE);
	}
</code></pre>
<p>Steht im csTmp &quot;bla€test&quot; dann ist nach der Konvertierung nur noch &quot;bla&quot; übrig.</p>
<p>Was mache ich verkehrt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1086708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1086708</guid><dc:creator><![CDATA[Lupus]]></dc:creator><pubDate>Tue, 27 Jun 2006 10:49:27 GMT</pubDate></item><item><title><![CDATA[Reply to WideCharToMultiByte probleme on Wed, 28 Jun 2006 06:52:17 GMT]]></title><description><![CDATA[<p>Morgen Lupus,</p>
<p>der Buffer ist nicht leer. Es steht &quot;\0test\0\0\0...&quot; drinne.</p>
<p>LpDefaultChar ist bei Dir &quot;&quot;. WideCharToMultiByte nimmt hieraus das 1. Zeichen um nicht konvertierbare Zeichen zu ersetzen, also \0.</p>
<p>cu, Bernd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1087312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1087312</guid><dc:creator><![CDATA[bst2]]></dc:creator><pubDate>Wed, 28 Jun 2006 06:52:17 GMT</pubDate></item><item><title><![CDATA[Reply to WideCharToMultiByte probleme on Wed, 28 Jun 2006 07:14:05 GMT]]></title><description><![CDATA[<p>Gibt es denn eine Möglichkeit, dass das Zeichen entfernt wird, anstatt es durch '\0' zu ersetzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1087332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1087332</guid><dc:creator><![CDATA[Lupus]]></dc:creator><pubDate>Wed, 28 Jun 2006 07:14:05 GMT</pubDate></item><item><title><![CDATA[Reply to WideCharToMultiByte probleme on Wed, 28 Jun 2006 08:57:13 GMT]]></title><description><![CDATA[<p>Hi Lupus,</p>
<p>das weiß ich nicht, sieht aber für mich nicht so aus.</p>
<p>Als &quot;Würgaround&quot; nimm als Ersatzzeichen ein sonst ungenutztes Zeichen wie \xff und lösche das danach.</p>
<h2>cu, Bernd</h2>
<pre><code>BOOL b = TRUE;
	if(WideCharToMultiByte(28591, 0, csTmp, -1, buffer, 255, &quot;\xff&quot;, &amp;b) == 0)
	{
		; // ASSERT(FALSE);
	}
	char * src, * dst;
	for ( src = buffer, dst = buffer; *src; src++ )
	{
		if ( *src != (char)0xff )
			*dst++ = *src;
	}
	*dst = 0;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1087424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1087424</guid><dc:creator><![CDATA[bst2]]></dc:creator><pubDate>Wed, 28 Jun 2006 08:57:13 GMT</pubDate></item><item><title><![CDATA[Reply to WideCharToMultiByte probleme on Wed, 28 Jun 2006 11:17:40 GMT]]></title><description><![CDATA[<p>Danke bst2</p>
<p>habe das mit dem Replace nach der Konvertierung schon eingebaut, finde nur der Weg ist nicht gerade der schönste und hatte gehofft es gibt noch eine bessere Möglichkeit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1087516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1087516</guid><dc:creator><![CDATA[Lupus]]></dc:creator><pubDate>Wed, 28 Jun 2006 11:17:40 GMT</pubDate></item></channel></rss>