Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
UTF-8-Fehler auf Console?
mosspower
myCSharp.de - Member

Avatar #avatar-2662.jpg


Dabei seit:
Beiträge: 456
Herkunft: Bamberg

Themenstarter:

UTF-8-Fehler auf Console?

beantworten | zitieren | melden

Hallo "Kollegen",

kann vielleicht einer mal den Code ausführen ...

String testValue = "]u:#\\_{]`0jAÖÇñG|e*Cv\\Ä6}v]*߀U}ñ]Ç-Ç?v`(@>Uvk9[=!`+.Gµ?[B]³[/B]~J[B]³[/B]T)n!B[}ö<q²)H";
Console.WriteLine(testValue);
Console.WriteLine(new UTF8Encoding().GetString(Encoding.UTF8.GetBytes(testValue)));

Bei mir zeigt der immer die hochgestellten 3er als die Zahl 3 an 8o ... wenn ich die in einem String habe 3 und hochgestellte 3, dann gibt der mir den Index der "normalen" 3 zurück, wenn die vor der hochgestellten 3 kommt. Was das denn? Bei den hochgestellten 2er passt es - sehr komisch.
private Nachricht | Beiträge des Benutzers
rastalt
myCSharp.de - Member



Dabei seit:
Beiträge: 234

beantworten | zitieren | melden

Also bei mir wird in beiden fällen das Selbe ausgegeben:

]u:#\_{]`0jAÖÇñG|e*Cv\Ä6}v]*ß?U}ñ]Ç-Ç?v`(@>Uvk9[=!`+.Gµ?[B]³[/B]~J[B]³[/B]T)n!B[
}ö<q²)H
private Nachricht | Beiträge des Benutzers
kleines_eichhoernchen
myCSharp.de - Member

Avatar #avatar-2079.jpg


Dabei seit:
Beiträge: 3.971
Herkunft: Ursprünglich Vogtland, jetzt Much

beantworten | zitieren | melden

Zitat
Console.WriteLine(new UTF8Encoding().GetString(Encoding.UTF8.GetBytes(testValue)));
So wie du das brauchst, ist es schwachsinn, das mit Byte ausgeben zu lassen.
Nur die ersten 127 Ansi-Zeichen (die auf jedem PC und Sprache/Region) gleich sind, können so korrekt ausgegeben werden. Alle Zeichen darüber werden mit 2 bis 4 Zeichen dargestellt. Verwende daher lieber String.ToCharArray() und gebe jedes Zeichen als Int32 aus.

Ansonsten schau mal, was du bei dir in der Console für ne Standard-Schriftart ausgewählt hast, eventuell ist diese nicht Unicode fähig.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von kleines_eichhoernchen am .
Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...
private Nachricht | Beiträge des Benutzers
mosspower
myCSharp.de - Member

Avatar #avatar-2662.jpg


Dabei seit:
Beiträge: 456
Herkunft: Bamberg

Themenstarter:

beantworten | zitieren | melden

Zitat von rastalt
Also bei mir wird in beiden fällen das Selbe ausgegeben:

]u:#\_{]`0jAÖÇñG|e*Cv\Ä6}v]*ß?U}ñ]Ç-Ç?v`(@>Uvk9[=!`+.Gµ?[B]³[/B]~J[B]³[/B]T)n!B[
}ö<q²)H

Bei mir ja auch, nur das Zeichen der hochgestellten 3 wird als die Zahl 3 eingestellt.

@kleines_eichhoernchen,

wo kann man das denn einstellen?

Naja, die Problematik hat sich erledigt. Ich habe über eine Stunde nach einen Fehler gesucht, nur weil ich den String aus der Console kopiert habe - jetzt schreibe ich (gespeichert UTF-8) in eine Datei und kopiere das dann da raus, das funzzt.
private Nachricht | Beiträge des Benutzers
kleines_eichhoernchen
myCSharp.de - Member

Avatar #avatar-2079.jpg


Dabei seit:
Beiträge: 3.971
Herkunft: Ursprünglich Vogtland, jetzt Much

beantworten | zitieren | melden

Rechte Maustaste auf das CMD-Icon oben Links im CMD-Fenster, Eigenschaften, Schriftart. Lucida Console stellt Unicode-Zeichen dar, leider aber nicht alle.
Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...
private Nachricht | Beiträge des Benutzers