Wie Kyrillisch in C#?

5 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet
Alles ist mit UTF-8 gespeichert...

Ok.. schau'n wir mal... ich arbeite auch nicht oft mit mit Kyrillischen Zeichen 🤔

Ich nehme den Kommentar mal als eigene Antwort hoch...

Sagen wir unserem Programm einfach, wie es mit den Zeichen vom Input umgehen soll und was ausgespuckt wird .

Console.InputEncoding = Encoding.Unicode;
Console.OutputEncoding = Encoding.Unicode;

...und schon klappts mit der Sprache der Nachbarn...

using System;
using System.Text;


namespace MyApplication
{
  class Program
  {
    static void Main(string[] args)
    {
      //nur mal was nicht klappt
      Console.WriteLine("current InputEncoding is: " + Console.InputEncoding);
      Console.WriteLine("current outputputEncoding is: " + Console.OutputEncoding);
      Console.WriteLine("testing:");
      Console.WriteLine("Enter something kyrillic:");
      string Test = Console.ReadLine();
      Console.WriteLine("Input was : " + Test);
      
      
      Console.WriteLine("now switching IN-Out to unicode 16LE");
      //Codierung  festlegen... Unicode16LE ist durch eine feste Zeichenbreite sehr stabil.
      Console.InputEncoding = Encoding.Unicode;
      Console.OutputEncoding = Encoding.Unicode;
      Console.WriteLine("current InputEncoding is: " + Console.InputEncoding);
      Console.WriteLine("current outputputEncoding is: " + Console.OutputEncoding);
      Console.WriteLine("testing:");
      Console.WriteLine("Enter something kyrillic:");
      Test = Console.ReadLine();
      Console.WriteLine("Input was : " + Test);
      Console.ReadKey();
    }
  }
}

Bild zum Beitrag

m ggf auch utf8 in eine Textdatei auszugeben kannst du dich an die Methoden von https://docs.microsoft.com/en-us/dotnet/api/system.text.encoding?view=net-5.0 halten.

https://docs.microsoft.com/de-de/dotnet/api/system.text.encoding.convert?view=net-5.0

 - (Computer, programmieren, C Sharp)

plantgrower321 
Beitragsersteller
 02.01.2021, 20:46

Danke! Es hat geklappt! Sorry dass ich so spät antworte!

0

Entweder Du hast deine Quelldatei als ANSI gespeichert oder im Programm eine Falsche Codepage gesetzt oder einen Font gewählt, welcher über keine Kyrill. Zeichen verfügt,gewählt.

Consolas Lucinda Console etc. können das aus dem Stand.

Ich weiß nicht was Du da treibst, aber wenn die .CS-Datei als UTF-8 Text (ohne BOM) gespeichert wurde, werden die Zeichen auch richtig ausgewertet. Standardmäßig nimmt der C#-Compiler an, die Quelldatei sei UTF-8


plantgrower321 
Beitragsersteller
 29.12.2020, 16:31

Alles ist mit UTF-8 gespeichert

0

Offenbar willst du im Sourcecode kyrillische Zeichen haben.

Da gibt's die üblichen Möglichkeiten:

  • Du speicherst deinen Sourcecode in einem entsprechenden Encoding. Heutzutage ist das üblicherweise UTF-8, womit sich sämtliche Unicode-Codepoints abbilden lassen. Dein Editor (z.B. Visual Studio) hat dafür Einstellungen.
  • Du verwendest die dafür üblichen Escapezeichen (Backslash-u), dann geht das sogar in ASCII.

plantgrower321 
Beitragsersteller
 17.12.2020, 20:41

Wo genau sind diese Einstellungen?

0

Was bedeutet "In c# ein Zeichen eingeben"?

In deinen Programmcode? Oder in das laufende Programm?


plantgrower321 
Beitragsersteller
 17.12.2020, 18:18

Halt dass es aus dem Programmcode ins Programm kommt

0
DerEinsiedler  17.12.2020, 18:24
@plantgrower321

Und wo? In einer Textbox, oder auf der Console.

Wo entsteht das Problem? Beim Eingeben in die Entwicklungsumgebung oder bei der Ausgabe?

0
DerEinsiedler  18.12.2020, 08:09
@plantgrower321

Dir muss man die Würmer aber ordentlich aus der Nase ziehen.

Betriebssystem? Version von .Net?

Die Console ist sehr zickig in der Anzeige komischer Zeichensätze.

Du musst auf jeden Fall dafür sorgen UTF-8-Codierung bei der Ausgabe zu verwenden. Ich würde das ganze erstmal auf ne Form oder so versuchen auszugeben um zu sehen, ob es da klappt.

Versuche in der console (falls es Windows ist) davor mal den Befehl:

chcp 65001

0