<?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[Konsolen-Ausgaben unter Windows 7 und 8.1 (Encoding)]]></title><description><![CDATA[<p>Ich habe Programme, die als Konsolenprogramm Texte über Console.WriteLine ausgeben bzw. als Fenster-Programm in einer RichTextBox. Bei Windows 10 und 11 ist die Ausgabe OK, bei Win7 und 8.1 (beide in einer VM) werden über Console bestimmte UTF-8 Zeichen nicht korrekt ausgegeben<br />
So sollte die Ausgabe aussehen</p>
<pre><code class="language-cpp">grünem
Gras
Windows
€
Ein
fröhliches
E
</code></pre>
<p>und so sieht es aus<br />
<a href="http://www.hkressedd.de/Bilder/vm81.jpg" rel="nofollow">Link Text</a></p>
<p>Im Konsolen-Programm führe ich vor der ersten Konsolen-Ausgabe folgende Befehle aus</p>
<pre><code class="language-csharp">Console.OutputEncoding = Encoding.Default;
Console.InputEncoding  = Encoding.Default;
</code></pre>
<p>Ich habe es auch mit</p>
<pre><code class="language-csharp">Encoding.UTF8
</code></pre>
<p>versucht, da kommt der gleiche Fehler.<br />
Ich habe extra VS2022 in der vm-Win8.1 installiert und dort im Debugger nachgeschaut, da sind die Code intern im Speicher alle OK, nur die Ausgabe per Console.WriteLine ist fehlerhaft.</p>
<p>Die Standard/aktive Codepage, die man in einem CMD-Fender mit CHCP anzeigen kann, ist sowohl bei Win7, 8.1 aber auch 10 und 11 jeweils CP 850.</p>
<p>Muss bei diesen Befehlen statt Default etwas anderes angegeben werden - oder geht das prinzipiell bei WIn7 und 8.1 mit einem VS2022-Programm nicht.</p>
<pre><code class="language-csharp">Console.OutputEncoding = Encoding.Default;
Console.InputEncoding  = Encoding.Default;
</code></pre>
<p>Als Zielframework ist =&gt; <strong>.NET Framework 4.8</strong> eingestellt.<br />
Muss dort für Win7 und 8.1 etwas früheres stehen ?</p>
<p>Müsste ich mal VS2010 installieren, das habe ich auch noch...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/354010/konsolen-ausgaben-unter-windows-7-und-8-1-encoding</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 15:29:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/354010.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 03 Apr 2023 07:56:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konsolen-Ausgaben unter Windows 7 und 8.1 (Encoding) on Mon, 03 Apr 2023 08:11:15 GMT]]></title><description><![CDATA[<p>Ich habe Programme, die als Konsolenprogramm Texte über Console.WriteLine ausgeben bzw. als Fenster-Programm in einer RichTextBox. Bei Windows 10 und 11 ist die Ausgabe OK, bei Win7 und 8.1 (beide in einer VM) werden über Console bestimmte UTF-8 Zeichen nicht korrekt ausgegeben<br />
So sollte die Ausgabe aussehen</p>
<pre><code class="language-cpp">grünem
Gras
Windows
€
Ein
fröhliches
E
</code></pre>
<p>und so sieht es aus<br />
<a href="http://www.hkressedd.de/Bilder/vm81.jpg" rel="nofollow">Link Text</a></p>
<p>Im Konsolen-Programm führe ich vor der ersten Konsolen-Ausgabe folgende Befehle aus</p>
<pre><code class="language-csharp">Console.OutputEncoding = Encoding.Default;
Console.InputEncoding  = Encoding.Default;
</code></pre>
<p>Ich habe es auch mit</p>
<pre><code class="language-csharp">Encoding.UTF8
</code></pre>
<p>versucht, da kommt der gleiche Fehler.<br />
Ich habe extra VS2022 in der vm-Win8.1 installiert und dort im Debugger nachgeschaut, da sind die Code intern im Speicher alle OK, nur die Ausgabe per Console.WriteLine ist fehlerhaft.</p>
<p>Die Standard/aktive Codepage, die man in einem CMD-Fender mit CHCP anzeigen kann, ist sowohl bei Win7, 8.1 aber auch 10 und 11 jeweils CP 850.</p>
<p>Muss bei diesen Befehlen statt Default etwas anderes angegeben werden - oder geht das prinzipiell bei WIn7 und 8.1 mit einem VS2022-Programm nicht.</p>
<pre><code class="language-csharp">Console.OutputEncoding = Encoding.Default;
Console.InputEncoding  = Encoding.Default;
</code></pre>
<p>Als Zielframework ist =&gt; <strong>.NET Framework 4.8</strong> eingestellt.<br />
Muss dort für Win7 und 8.1 etwas früheres stehen ?</p>
<p>Müsste ich mal VS2010 installieren, das habe ich auch noch...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2615319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2615319</guid><dc:creator><![CDATA[hkdd]]></dc:creator><pubDate>Mon, 03 Apr 2023 08:11:15 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen-Ausgaben unter Windows 7 und 8.1 (Encoding) on Mon, 03 Apr 2023 08:20:58 GMT]]></title><description><![CDATA[<p>Wie startest du denn den Programm? Öffnest du erst die Konsole per CMD und führst dann deine Anwendung aus?<br />
Ich weiß nicht wie man die C# Anwendung dazu bringt, das aktuelle Encoding der Konsole zu benutzen, aber du kannst der Konsole mit <code>chcp [nnn]</code> sagen, dass sie eine bestimmte CodePage für die Ein- und Ausgabe benutzen soll. Die ID für UTF-8 ist 65001, probier mal bitte ```chcp 65001````. Ist natürlich doof, wenn man das immer manuell nach jedem Start der Konsole machen muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2615320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2615320</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Mon, 03 Apr 2023 08:20:58 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen-Ausgaben unter Windows 7 und 8.1 (Encoding) on Mon, 03 Apr 2023 09:42:19 GMT]]></title><description><![CDATA[<p>Hallo DocShoe,<br />
mit CHCP 65001 und CHCP 850 usw. habe ich gemacht.<br />
Bei Windows 10 und 11 klappt das auch,<br />
aber bei WIndows 8.1 und 7 zeigt das keine Wirkung.</p>
<p>Ich habe mal ein ganz kleines Programm unter Win8.1 mit VS2022 gemacht:</p>
<pre><code class="language-csharp">using System;

namespace ConsoleNET472Vm81
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string Text = 
                &quot;Fröhliches Ostern\n&quot; +
                &quot;auf der grünen Wiese\n&quot; +
                &quot;Eintritt: 5,00 €\n&quot; +
                &quot;x²+y² = z²\n&quot; +
                &quot;2³ = 8\n&quot;+
                &quot;äöüß AÖÜ € @ °&quot;;
            Console.WriteLine(Text);    
            Console.ReadLine();
        }
    }
}
</code></pre>
<p>Da werden alle Zeichen richtig angezeigt, außer dem &quot;€&quot; Euro, dafür wird ein ? ausgegeben.<br />
Wenn ich das Programm in einem CMD-Fenster mit vorherigem CHCP 65001 starte,<br />
da wird alles korrekt ausgegeben, auch das €-Zeichen.</p>
<p>Bei Windows 10 ist es ganz genau so.</p>
<p>Man darf also die beiden Befehle</p>
<pre><code class="language-csharp">Console.OutputEncoding = Encoding.Default;
Console.InputEncoding  = Encoding.Default;
</code></pre>
<p>nicht ausführen unter Windows 8.1.<br />
Bei Win 10 und 11 müssen sie sein, damit die Ausgabe stimmt.</p>
<p>So sieht es bei Win10 aus, da muss cp 65001 nicht angegeben werden, trotzdem wird das €-Zeichen richtig ausgegeben. VS fügt die Anweisung</p>
<pre><code class="language-csharp">using System.Text; 
</code></pre>
<p>ein.</p>
<pre><code class="language-csharp">using System;
using System.Text;

namespace ConsoleNET472Vm81
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string Text = 
                &quot;Fröhliches Ostern\n&quot; +
                &quot;auf der grünen Wiese\n&quot; +
                &quot;Eintritt: 5,00 €\n&quot; +
                &quot;x²+y² = z²\n&quot; +
                &quot;2³ = 8\n&quot;+
                &quot;äöüß AÖÜ € @ °&quot;;

            Console.OutputEncoding = Encoding.Default;
            Console.InputEncoding = Encoding.Default;

            Console.WriteLine(Text);    
            Console.ReadLine();
        }
    }
}

</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2615323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2615323</guid><dc:creator><![CDATA[hkdd]]></dc:creator><pubDate>Mon, 03 Apr 2023 09:42:19 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen-Ausgaben unter Windows 7 und 8.1 (Encoding) on Mon, 03 Apr 2023 12:35:20 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18927">@DocShoe</a> sagte in <a href="/forum/post/2615320">Konsolen-Ausgaben unter Windows 7 und 8.1 (Encoding)</a>:</p>
<blockquote>
<p>Wie startest du denn den Programm?</p>
</blockquote>
<p>Jetzt habe ich es gefunden - das wusste ich eigentlich schon von einem anderen Programm, habe aber nicht gleich daran gedacht.....</p>
<p>CHCP 65001 - ist die eine Sache.</p>
<p>ABER =&gt; man muss im CMD-Fenster  bei WIndows 7 und 8.1 die Schriftart auf eine umstellen, die auch UTF8 darstellen kann.</p>
<p>Voreingestellt ist = Rasterschriftart.<br />
Das muss man ändern in =&gt; Lucia Console</p>
<p>Mein kleines Testprogramm sieht jetzt so aus und funktioniert:</p>
<pre><code class="language-csharp">using System;
using System.Reflection;
using System.Text;
using System.Management;

namespace ConsoleNET472Vm81
{
    internal class Program
    {
        public static int WinVer = 0; //Windows-Version = 7, 81, 10, 11 oder 0 = nicht erkannt

        static void Main(string[] args)
        {
            WinVer = GetOperatingSystem(); //Windows-Version = 7, 81, 10, 11 oder 0 = nicht erkannt

            string Text = 
                &quot;Fröhliches Ostern\n&quot; +
                &quot;auf der grünen Wiese\n&quot; +
                &quot;Eintritt: 5,00 €\n&quot; +
                &quot;x²+y² = z²\n&quot; +
                &quot;2³ = 8\n&quot;+
                &quot;äöüß AÖÜ € @ °&quot;;

            if ((WinVer == 10) || (WinVer == 11))
            {
                Console.OutputEncoding = Encoding.Default;
                Console.InputEncoding = Encoding.Default;
            }

            Console.WriteLine(Text);    
            Console.ReadLine();

        } // Main

        //===================================================================
        // Ermitteln, unter welchem Windows das Programm läuft
        //===================================================================
        static int GetOperatingSystem()
        {
            ManagementScope scope = new ManagementScope(&quot;root\\CIMV2&quot;);
            SelectQuery query = new SelectQuery(&quot;Win32_OperatingSystem&quot;);
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
            foreach (ManagementObject item in searcher.Get())
            {
                string sCaption = (string)item.Properties[&quot;Caption&quot;].Value; // Operating System

                if (sCaption.Contains(&quot;Microsoft Windows 11&quot;)) return 11;
                if (sCaption.Contains(&quot;Microsoft Windows 10&quot;)) return 10;
                if (sCaption.Contains(&quot;Microsoft Windows 8.1&quot;)) return 81;
                if (sCaption.Contains(&quot;Microsoft Windows 7&quot;)) return 7;
            }
            return 0; // kein Windows 7, 8.1, 10 oder 11 gefunden

        } // GetOperatingSystem()
    }
}
</code></pre>
<p>Und schon können UTF8-Zeichen, wie das €-Zeichen angezeigt werden.</p>
<p>Auch unter Windows 7 klappt es...</p>
<p><a href="http://www.hkressedd.de/Bilder/vm7.jpg" rel="nofollow">Link Text</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2615335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2615335</guid><dc:creator><![CDATA[hkdd]]></dc:creator><pubDate>Mon, 03 Apr 2023 12:35:20 GMT</pubDate></item></channel></rss>