<?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[Übersetzung, Utf8, etc.]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich bin grad dabei das core-Modul meiner Anwendung von Qt4 zu trennen. Dabei hab ich für so ziemlich alles ne Lösung gefunden.<br />
Nur ein paar Sachen hab ich keine Ahnung, wo ich ansetzen soll.</p>
<ol>
<li>
<p>Übersetzungen. Qt macht einem da das Leben ziemlich leicht. Strings mit &quot;tr()&quot; erstellen, schon tauchen sie im Linguist auf und man kann sie übersetzen, fertig.<br />
Gibt es da auch ne Lösung fern von jedem Toolkit?<br />
Die &quot;.po&quot;-Files, die unter Linux recht verbreitet sind, kann man die auch leicht (ohne MinGW-Schwanz) unter Windows verwenden? Oder gibt es noch ganz andere Tools?</p>
</li>
<li>
<p>Ich hab so meine Probleme mit UTF8. Verwendung von std::wstring/std::wcout ergibt völligen Mist. Auch hier war QString + Q[Text,Data]Stream eine richtig feine und unkomplizierte Sache. Ich hab mal einen Blogeintrag gefunden (den ich natürlich jetzt nimmer finde...) in dem das durch eine Unzulänglichkeit im operator[&lt;&lt;,&gt;&gt;] in Bezug auf wstring erklärt war. AFAIK (ganz dunkel) lag das daran, dass ohne Rücksicht auf die dynamische Länge eines UTF8-Strings einfach alles auf char* gebrochen wird.<br />
Folgendes Beispiel (Datei als UTF-8 gespeichert, LC_CTYPE (auch LC_ALL) auf de_DE.UTF-8 gestellt)</p>
</li>
</ol>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;iostream&gt;

int main( int argc, char** argv ) 
{
    std::wstring s( L&quot;höläß&quot; );
    std::wcout &lt;&lt; s &lt;&lt; std::endl;
    return 0;
}
</code></pre>
<p>ergibt diesen Output:</p>
<pre><code>h?l?ss
</code></pre>
<p>Jetzt bin ich über iconv gestolpert. Im Endeffekt läuft das darauf hinaus, dass ich mir da ne eigene String-Klasse schreiben müsste.<br />
Gibts das echt nicht einfacher?</p>
<p>Ich hoffe hier kann mir jemand nen kleinen Tip geben. Oder evtl. auf ein Projekt stoßen, welches unabhängig von irgendwelchen Gui-Frameworks oder Plattformspezifischen Tools diese Probleme löst.</p>
<p>Besten Dank schon mal!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/243240/übersetzung-utf8-etc</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 18:30:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/243240.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 14 Jun 2009 14:38:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Übersetzung, Utf8, etc. on Sun, 14 Jun 2009 14:38:40 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich bin grad dabei das core-Modul meiner Anwendung von Qt4 zu trennen. Dabei hab ich für so ziemlich alles ne Lösung gefunden.<br />
Nur ein paar Sachen hab ich keine Ahnung, wo ich ansetzen soll.</p>
<ol>
<li>
<p>Übersetzungen. Qt macht einem da das Leben ziemlich leicht. Strings mit &quot;tr()&quot; erstellen, schon tauchen sie im Linguist auf und man kann sie übersetzen, fertig.<br />
Gibt es da auch ne Lösung fern von jedem Toolkit?<br />
Die &quot;.po&quot;-Files, die unter Linux recht verbreitet sind, kann man die auch leicht (ohne MinGW-Schwanz) unter Windows verwenden? Oder gibt es noch ganz andere Tools?</p>
</li>
<li>
<p>Ich hab so meine Probleme mit UTF8. Verwendung von std::wstring/std::wcout ergibt völligen Mist. Auch hier war QString + Q[Text,Data]Stream eine richtig feine und unkomplizierte Sache. Ich hab mal einen Blogeintrag gefunden (den ich natürlich jetzt nimmer finde...) in dem das durch eine Unzulänglichkeit im operator[&lt;&lt;,&gt;&gt;] in Bezug auf wstring erklärt war. AFAIK (ganz dunkel) lag das daran, dass ohne Rücksicht auf die dynamische Länge eines UTF8-Strings einfach alles auf char* gebrochen wird.<br />
Folgendes Beispiel (Datei als UTF-8 gespeichert, LC_CTYPE (auch LC_ALL) auf de_DE.UTF-8 gestellt)</p>
</li>
</ol>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;iostream&gt;

int main( int argc, char** argv ) 
{
    std::wstring s( L&quot;höläß&quot; );
    std::wcout &lt;&lt; s &lt;&lt; std::endl;
    return 0;
}
</code></pre>
<p>ergibt diesen Output:</p>
<pre><code>h?l?ss
</code></pre>
<p>Jetzt bin ich über iconv gestolpert. Im Endeffekt läuft das darauf hinaus, dass ich mir da ne eigene String-Klasse schreiben müsste.<br />
Gibts das echt nicht einfacher?</p>
<p>Ich hoffe hier kann mir jemand nen kleinen Tip geben. Oder evtl. auf ein Projekt stoßen, welches unabhängig von irgendwelchen Gui-Frameworks oder Plattformspezifischen Tools diese Probleme löst.</p>
<p>Besten Dank schon mal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1726425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1726425</guid><dc:creator><![CDATA[Portier]]></dc:creator><pubDate>Sun, 14 Jun 2009 14:38:40 GMT</pubDate></item><item><title><![CDATA[Reply to Übersetzung, Utf8, etc. on Sun, 14 Jun 2009 15:27:36 GMT]]></title><description><![CDATA[<p>Zu 1)<br />
Kenne Qt nicht so genau, daher kann ich dir da schlecht weiterhelfen. Von C++ selber gibt es sowas:<br />
<a href="http://www.cplusplus.com/reference/std/locale/messages/" rel="nofollow">http://www.cplusplus.com/reference/std/locale/messages/</a></p>
<p>Ist allerdings ziemlich unbekannt und unverbreitet.</p>
<p>Zu 2)<br />
<code>std::wstring</code> ist unter Windows ein UCS-2 String und unter Linux meistens ein UCS-4 String. Wie du hier auf UTF-8 kommst, ist mir ein Rätsel.<br />
<code>std::wcout</code> gibt auf der Konsole aus und die Windowskonsole gibt dann meistens die Zeichen falsch aus. Aber auch hier findet man nirgends UTF-8.</p>
<p>Unicode ist in C++ derzeit ziemlich schlecht unterstützt. Allerdings über einen <code>std::string</code> und <a href="http://utfcpp.sourceforge.net/" rel="nofollow">ein bisschen zusätzlicher Hilfe</a>, kann man ziemlich gut mit UTF-8 umgehen. Dies schliesst allerdings die Ausgabe auf der Konsole oder das verarbeiten in normalen Streams aus.</p>
<p>Also speichere die Strings als UTF-8 in <code>std::string</code> und lies die Strings dann über <code>QString</code> wieder aus. Bietet <code>QString</code> keine statische Methode <code>FromUTF8</code> oder sowas?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1726453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1726453</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 14 Jun 2009 15:27:36 GMT</pubDate></item><item><title><![CDATA[Reply to Übersetzung, Utf8, etc. on Sun, 14 Jun 2009 20:30:16 GMT]]></title><description><![CDATA[<p>Hey, danke für die Antwort!</p>
<p>Dravere schrieb:</p>
<blockquote>
<p>Zu 1)<br />
Kenne Qt nicht so genau, daher kann ich dir da schlecht weiterhelfen. Von C++ selber gibt es sowas:<br />
<a href="http://www.cplusplus.com/reference/std/locale/messages/" rel="nofollow">http://www.cplusplus.com/reference/std/locale/messages/</a></p>
<p>Ist allerdings ziemlich unbekannt und unverbreitet.</p>
</blockquote>
<p>Danke, werd das trotzdem mal anschauen.</p>
<blockquote>
<p>Zu 2)<br />
<code>std::wstring</code> ist unter Windows ein UCS-2 String und unter Linux meistens ein UCS-4 String. Wie du hier auf UTF-8 kommst, ist mir ein Rätsel.</p>
</blockquote>
<p>Sry, hab ich irgendwo aufgeschnappt, k.A... Mist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
<blockquote>
<p>Allerdings über einen <code>std::string</code> und <a href="http://utfcpp.sourceforge.net/" rel="nofollow">ein bisschen zusätzlicher Hilfe</a>, kann man ziemlich gut mit UTF-8 umgehen. Dies schliesst allerdings die Ausgabe auf der Konsole oder das verarbeiten in normalen Streams aus.</p>
</blockquote>
<p>Merde, das war mit ein Grund warum ich weg von Qt wollte, damit ich die Libs auch von der Konsole aus verwenden kann (geht mit Qt ja auch, aber, naja...), und Guis nicht auf Qt festgelegt sind, damit man einem gtkmm oder sonstwas Frintend nicht den Weg verbaut.</p>
<blockquote>
<p>Also speichere die Strings als UTF-8 in <code>std::string</code> und lies die Strings dann über <code>QString</code> wieder aus. Bietet <code>QString</code> keine statische Methode <code>FromUTF8</code> oder sowas?</p>
</blockquote>
<p>Sicher gibt es die statische Methode <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="😉"
    /> Es gibt auch fromStdString, fromStdWString, fromUcs4, fromUtf16. Aber das hilft mir alles nix. Wollte ich nur ein Qt4-Frontend, bräuchte ich ja auch das core nicht davon befreien.</p>
<p>Momentan ist das ne größere Lib, incl. Schnittstellen für Plugins. Es läuft alles wunderbar, halt komplett mit Qt4-Bordmitteln. Und wenn die beiden Probleme gelöst sind, könnte ich mich an ein Konzept zur Porierung setzen...</p>
<p>Guts Nächtle!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1726621</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1726621</guid><dc:creator><![CDATA[Portier]]></dc:creator><pubDate>Sun, 14 Jun 2009 20:30:16 GMT</pubDate></item><item><title><![CDATA[Reply to Übersetzung, Utf8, etc. on Tue, 16 Jun 2009 09:09:17 GMT]]></title><description><![CDATA[<p>So schlimm wie Dravere es ausdrückt ist es gar nicht. Du kannst dir zum Beispiel mal <a href="http://gcc.gnu.org/onlinedocs/libstdc++/manual/codecvt.html" rel="nofollow">das hier</a> ansehen.</p>
<p>Zu den messages: Die verwenden bei der GNU-libstdc++ auch intern gettext, also .po-Kataloge.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1727436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1727436</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Tue, 16 Jun 2009 09:09:17 GMT</pubDate></item><item><title><![CDATA[Reply to Übersetzung, Utf8, etc. on Sun, 21 Jun 2009 08:15:13 GMT]]></title><description><![CDATA[<p>Hmm, so wie ich jetzt die locale-Klasse verstanden hab, ist das ja bloß um die Ausgabe von Datum, Zahlenpunkt, etc an die Lokalisierung des Rechners anzupassen. Und für Übersetzungen kann man das gar nicht brauchen.</p>
<p>Das werd ich deshalb erstmal nur mit gnu-gettext machen (weiß jemand ob das unter Windows gut läuft? Oder gibts für Windows was eigenes...)</p>
<p>Ciao</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1730342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1730342</guid><dc:creator><![CDATA[Portier]]></dc:creator><pubDate>Sun, 21 Jun 2009 08:15:13 GMT</pubDate></item><item><title><![CDATA[Reply to Übersetzung, Utf8, etc. on Sun, 21 Jun 2009 12:47:06 GMT]]></title><description><![CDATA[<p>Qt Linguist gibts doch auch für Windows. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1730463</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1730463</guid><dc:creator><![CDATA[multi languag0r]]></dc:creator><pubDate>Sun, 21 Jun 2009 12:47:06 GMT</pubDate></item></channel></rss>