Russische Zeichen und Umlaute Anzeigen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von Kevin B..

    Russische Zeichen und Umlaute Anzeigen

    Hallo Zusammen,

    ich habe das Problem das bei meine ComboBox keine Russische Zeichen angezeigt werden.

    Ich habe dies ​System.Text.Encoding.Default Versucht, damit habe ich dies mit den Umlauten behoben nur die Russischen Zeichen werden Leider so ​/&#------ angezeigt.

    Kann mir jemand bei den Problem behilflich sein?
    LG Kevin B.
    Also das Problem liegt sicher nicht bei der ComboBox:

    Wo kommt denn der String her, den Du in die ComboBox einfügst?
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Ich habe etwas interessantes für dich gefunden, was dir vielleicht helfen könnte:

    VB.NET-Quellcode

    1. ​Private Declare Function GetACP Lib "kernel32" () As Long
    2. Private Const ANSI_CHARSET = 0 ' Ansi Zeichensatz
    3. Private Const ARABIC_CHARSET = 178 ' Arabisch (NT/2000)
    4. Private Const BALTIC_CHARSET = 186 ' Baltisch (Win 9x)
    5. Private Const CHINESEBIG5_CHARSET = 136 ' Chinesisch
    6. Private Const DEFAULT_CHARSET = 1 ' Standard
    7. Private Const EASTEUROPE_CHARSET = 238 ' Osteuropäisch (Win 9x)
    8. Private Const GB2312_CHARSET = 134 ' Englisch
    9. Private Const GREEK_CHARSET = 161 ' Griechisch (Win 9x)
    10. Private Const HANGEUL_CHARSET = 129 ' Handgeul
    11. Private Const HEBREW_CHARSET = 177 ' Hebräisch (NT/2000)
    12. Private Const JOHAB_CHARSET = 130 ' Johab (Win 9x)
    13. Private Const MAC_CHARSET = 77 ' Mac (Win 9x)
    14. Private Const OEM_CHARSET = 255 ' OEM
    15. Private Const RUSSIAN_CHARSET = 204 ' Russisch (Win 9x)
    16. Private Const SHIFTJIS_CHARSET = 128 ' ShiftJis
    17. Private Const SYMBOL_CHARSET = 2 ' Symbolisch
    18. Private Const THAI_CHARSET = 222 ' Thailändisch (NT/2000)
    19. Private Const TURKISH_CHARSET = 162 ' Türkisch (Win 9x)
    20. Private Const CODEPAGE_RUSSIAN As Long = 1251
    21. Private Const CODEPAGE_GERMAN As Long = 1252
    22. private myCharset As Long
    23. Private Sub Class_Initialize()
    24. Select Case GetACP
    25. Case CODEPAGE_RUSSIAN
    26. myCharset = RUSSIAN_CHARSET
    27. Case Else
    28. myCharset = 0
    29. End Select
    30. End Sub


    "Dann wird bei mir eine Schleife über alle Controls aufgerufen die folgendes setzt "

    VB.NET-Quellcode

    1. ​ctl.Font.Charset = myCharset


    Vielleicht hilft dir das ein wenig weiter.
    Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.
    @Kevin B.

    ​glaube nicht das du den API Aufruf brauchst, das dotNet Framework sollte die Darstellung von sich aus beherrschen.
    War bei VB6 noch anders.
    Entscheidend, denke ich, ist das Encoding - nur wenn das stimmt können die Zeichen auch richtig dargestellt werden.

    Schau dir mal das hier an - stackoverflow.com/questions/12…illic-encoding-in-c-sharp.
    ​Ist zwar was mit DB - sollte aber erst einmal egal sein.

    Gruss

    ​mikeb69
    Das spricht dann dafür dass beim Encoding was nicht passt.
    ​Denke daran, dass du - vermutlich - einen Rechner auf deutsch hast.

    Du musst dass dann angeben denke ich.

    ​Wie sieht denn dein Code aus ?

    Gruss

    ​mikeb69
    Ich würde einfach den HTML-Code in das entsprechende Zeichen »replacen«.
    Der unterstrich "_" vor dem ";" muss entferntwerden!

    VB.NET-Quellcode

    1. txt = "abcd &#1065_; xyz"
    2. txt = txt.replace("&#1065_;", Chrw(1065))
    3. oder
    4. txt = "abcd &#x429_; xyz"
    5. txt = txt.replace("&#x429_;", Chrw(&H429))

    Ergebnis:
    abcd Щ xyz

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Eierlein“ ()

    mikeb69 schrieb:

    Das spricht dann dafür dass beim Encoding was nicht passt.
    ​Denke daran, dass du - vermutlich - einen Rechner auf deutsch hast.

    Du musst dass dann angeben denke ich.

    ​Wie sieht denn dein Code aus ?

    Gruss

    ​mikeb69


    Mein Code schaut so aus

    VB.NET-Quellcode

    1. ​Dim Staete() As Byte = wc.UploadValues(URL, "POST", nv)
    2. Dim Staetestring As String = System.Text.Encoding.Default.GetString(Staete)
    3. Dim Städte_s As String
    4. Dim Städte_a As Array
    5. Städte_s = Staetestring
    6. Städte_a = Split(Städte_s, ";")
    7. For Städte_i = 0 To UBound(Städte_a) - 1
    8. Von_i.Items.Add(Städte_a(Städte_i))
    9. Nach_i.Items.Add(Städte_a(Städte_i))
    10. Next Städte_i


    @Eierlein das hab ich eben Probiert klappt leider auch nicht.
    Ohne das jetzt getestet zu haben,

    VB.NET-Quellcode

    1. ​System.Text.Encoding.Default

    ​steht für das eingestellte Encoding deines Windows - quasi deine Land und Spracheinstellungen.
    ​Ist diese deutsch kann das nicht klappen - ohne mich zu weit aus dem Fenster zu lehnen.

    ​Hast du alles im passenden Encoding im String sollte alles passen.

    Wie sieht der Inhalt deines Strings aus, wenn du einen Breakpoint setzt ?

    Gruss

    mikeb69
    @Kevin B.

    ​Was meinst du mit Breakpoint?


    ​Naja - wenn du keine Breakpoint kennst muss ich mich aus diesem Thread verabschieden.
    ​Bei Breakpoints hält dein Programm an und du kannst den Zustand der Variablen ansehen.

    Unerlässlich !!

    Klick mal an den linken Rand neben deinem Code.
    ​Wenn dort ein roter Punkt erscheint hast du einen Breakpoint gesetzt und kannst die Variablen ansehen.

    ​Mach das mal kurz nach dem oben erwähnten Codeteil.

    Gruss

    mikeb69
    @mikeb69
    Jetzt hab ich es
    - Encoding.UTF8 {System.Text.UTF8Encoding} System.Text.Encoding {System.Text.UTF8Encoding}
    BodyName Der Ausdruck kann nicht ausgewertet werden, da der Code der aktuellen Methode optimiert wurde. String
    CodePage 65001 Integer
    + DecoderFallback {System.Text.DecoderReplacementFallback} System.Text.DecoderFallback {System.Text.DecoderReplacementFallback}
    + EncoderFallback {System.Text.EncoderReplacementFallback} System.Text.EncoderFallback {System.Text.EncoderReplacementFallback}
    EncodingName "Unicode (UTF-8)" String
    HeaderName Der Ausdruck kann nicht ausgewertet werden, da der Code der aktuellen Methode optimiert wurde. String
    IsBrowserDisplay True Boolean
    IsBrowserSave True Boolean
    IsMailNewsDisplay True Boolean
    IsMailNewsSave True Boolean
    IsReadOnly True Boolean
    IsSingleByte False Boolean
    WebName "utf-8" String
    WindowsCodePage 1200 Integer
    + dataItem {System.Globalization.CodePageDataItem} System.Globalization.CodePageDataItem
    + decoderFallback {System.Text.DecoderReplacementFallback} System.Text.DecoderFallback {System.Text.DecoderReplacementFallback}
    emitUTF8Identifier True Boolean
    + encoderFallback {System.Text.EncoderReplacementFallback} System.Text.EncoderFallback {System.Text.EncoderReplacementFallback}
    isThrowException False Boolean
    m_codePage 65001 Integer
    m_deserializedFromEverett False Boolean
    m_isReadOnly True Boolean
    + Freigegebene Member
    + Me {VFS.Tourenabrechnung} VFS.Tourenabrechnung
    + My.Settings {VFS.My.MySettings} VFS.My.MySettings
    + Staete {Length=10116} Byte()


    Und hier noch mal ein bild:

    @mikeb69
    Dies habe ich auch schon Probiert da wird mir den allerdings nicht mal die Deutschen umlaute angezeigt.
    HeaderName Der Ausdruck kann nicht ausgewertet werden, da der Code der aktuellen Methode optimiert wurde.
    BodyName Der Ausdruck kann nicht ausgewertet werden, da der Code der aktuellen Methode optimiert wurde.