<?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[Problem mit std::codecvt_utf8&amp;lt;wchar_t&amp;gt;]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versuche momentan eine UTF-8 kodierte Datei einzulesen ohne dabei auf Qt zurückzugreifen. Dazu verwende ich die codecvt_utf8&lt;wchar_t&gt; Klasse, die schon vom aktuellen Windows Kompiler unterstützt wird.<br />
Hier zuerst der Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;locale&gt;
#include &lt;fstream&gt;
#include &lt;codecvt&gt;

using namespace std;

int main() 
{
    std::locale utf8_locale(std::locale(), new std::codecvt_utf8&lt;wchar_t, 111411UL, std::consume_header&gt;(0));
    std::wifstream fs;
    fs.imbue(utf8_locale);
    fs.open(&quot;test.txt&quot;);
    if (!fs.is_open()) {
        wcout &lt;&lt; &quot;Couldn't open file&quot;;
        return 0;
    }

    std::wstring s;
    getline(fs, s);
    wcout &lt;&lt; s;
    wcin.get();
}
</code></pre>
<p>Die Datei test.txt ist eine UTF-8 kodierte Datei mit Header (deswegen std::consume_header). Zumindest gehe ich davon aus, dass sie UTF-8 kodiert ist, da ich sie vorher mit Visual Studio so abgespeichert habe.</p>
<p>Eingelesen wird die erste Zeile, die lediglich äöü lautet. Ausgegeben wird õ÷³.</p>
<p>Mache ich irgendetwas falsch oder liegt es an der Konsole?</p>
<p>Gruß,<br />
Frager</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/274029/problem-mit-std-codecvt_utf8-lt-wchar_t-gt</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 20:34:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/274029.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 17 Sep 2010 20:05:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit std::codecvt_utf8&amp;lt;wchar_t&amp;gt; on Fri, 17 Sep 2010 20:05:52 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versuche momentan eine UTF-8 kodierte Datei einzulesen ohne dabei auf Qt zurückzugreifen. Dazu verwende ich die codecvt_utf8&lt;wchar_t&gt; Klasse, die schon vom aktuellen Windows Kompiler unterstützt wird.<br />
Hier zuerst der Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;locale&gt;
#include &lt;fstream&gt;
#include &lt;codecvt&gt;

using namespace std;

int main() 
{
    std::locale utf8_locale(std::locale(), new std::codecvt_utf8&lt;wchar_t, 111411UL, std::consume_header&gt;(0));
    std::wifstream fs;
    fs.imbue(utf8_locale);
    fs.open(&quot;test.txt&quot;);
    if (!fs.is_open()) {
        wcout &lt;&lt; &quot;Couldn't open file&quot;;
        return 0;
    }

    std::wstring s;
    getline(fs, s);
    wcout &lt;&lt; s;
    wcin.get();
}
</code></pre>
<p>Die Datei test.txt ist eine UTF-8 kodierte Datei mit Header (deswegen std::consume_header). Zumindest gehe ich davon aus, dass sie UTF-8 kodiert ist, da ich sie vorher mit Visual Studio so abgespeichert habe.</p>
<p>Eingelesen wird die erste Zeile, die lediglich äöü lautet. Ausgegeben wird õ÷³.</p>
<p>Mache ich irgendetwas falsch oder liegt es an der Konsole?</p>
<p>Gruß,<br />
Frager</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1953975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1953975</guid><dc:creator><![CDATA[Frager]]></dc:creator><pubDate>Fri, 17 Sep 2010 20:05:52 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit std::codecvt_utf8&amp;lt;wchar_t&amp;gt; on Fri, 17 Sep 2010 23:47:48 GMT]]></title><description><![CDATA[<p>Das kann durchaus an der Konsole liegen Windows unterstützt kein Unicode in der Konsole. Es gibt nur eine extra Unicode Konsole von einem 3. Hersteller, Name weiß ich leider grade nicht.</p>
<p>Setz doch mal ein Breakpoint im Debugger bzw gebe es als MessageBox aus evtl. passt es dann schon.</p>
<p>Auch wird generell von Windows kein UTF-8(char) Locale unterstützt sondern nur UCS-16 (wchar 2 byte). Aber da du ja sowieso schon die konvertierung durchführst sollte es prinzipiell gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1954027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1954027</guid><dc:creator><![CDATA[DaRpH]]></dc:creator><pubDate>Fri, 17 Sep 2010 23:47:48 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit std::codecvt_utf8&amp;lt;wchar_t&amp;gt; on Sat, 18 Sep 2010 05:53:42 GMT]]></title><description><![CDATA[<p>DaRpH schrieb:</p>
<blockquote>
<p>Das kann durchaus an der Konsole liegen Windows unterstützt kein Unicode in der Konsole.</p>
</blockquote>
<p>echt ?</p>
<p>ich war der meinung das ab windows 2000 die console mit unicode arbeitet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1954039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1954039</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Sat, 18 Sep 2010 05:53:42 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit std::codecvt_utf8&amp;lt;wchar_t&amp;gt; on Sat, 18 Sep 2010 07:58:08 GMT]]></title><description><![CDATA[<p>Meep Meep schrieb:</p>
<blockquote>
<p>DaRpH schrieb:</p>
<blockquote>
<p>Das kann durchaus an der Konsole liegen Windows unterstützt kein Unicode in der Konsole.</p>
</blockquote>
<p>echt ?<br />
ich war der meinung das ab windows 2000 die console mit unicode arbeitet</p>
</blockquote>
<p>Korrekt. Aber je nach Windows muß man noch einstellen, daß in der Konsole eine Schriftart (also Lucida Console) verwendet wird, damit das richtig geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1954056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1954056</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 18 Sep 2010 07:58:08 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit std::codecvt_utf8&amp;lt;wchar_t&amp;gt; on Sat, 18 Sep 2010 09:21:17 GMT]]></title><description><![CDATA[<p>Mh, also es scheint tatsächlich ein Problem der Konsole zu sein. Wenn ich mir nämlich mit Hilfe des Debuggers des Inhalt des wstrings s ansehe, wird korrekt &quot;äöü&quot; angegeben.</p>
<p>Jetzt bleibt die Frage wie ich diesen Text auch auf die Konsole bekomme. &quot;Lucida Console&quot; habe ich schon als Schriftart gewählt - mit dem gleichen Ergebnis.</p>
<p>Vielen Dank für die Hilfe,<br />
Frager</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1954068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1954068</guid><dc:creator><![CDATA[Frager]]></dc:creator><pubDate>Sat, 18 Sep 2010 09:21:17 GMT</pubDate></item></channel></rss>