Sonderzeichen

  • Hallo,


    ich schreibe die Datensätze einer SQL-Abfrage in eine Combobox, doch leider werden die Umlaute als '?' dargestellt :(

    Wer kann mir bitte helfen?

    [autoit]


    While _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK
    ; Eintrag in Combobox schreiben
    GUICtrlSetData($cbo, BinaryToString($aRow[0], 4))
    WEnd

    [/autoit]


    Vielen Dank!


    Thx, Mike

  • Dein Code macht so wie er da steht nicht so viel Sinn in meinen Augen.. ?(
    Ein funktionierendes Beispiel wäre ganz praktisch, denn in dem Ausschnitt kann ich keinen Fehler erkennen der die Umlaute verändert.
    Mit diesen Informationen müsste ich darauf tippen, dass die Einträge bereits in der Datenbank mit ersetzten Umlauten drinstehen. BinaryToString wandelt mit Flag 4 die Binärdaten in einen UTF-8 String, an der Kodierung liegt es also nicht. Und wenn dann würden die Umalute nicht durch '?' ersetzt werden ^^.

  • Hi name22,


    danke für die schnelle Antwort.

    Anbei das ganze Coding:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <GuiButton.au3>
    #include <SQLite.au3>
    #include <SQLite.dll.au3>
    Global $hDB
    $frmMain = GUICreate("Carrier - Störungshierarchie v1.0 ©Mike Schmaler",481,226,-1,-1,-1,-1)
    $cboSchadensbild = GUICtrlCreateCombo("",127,119,230,21,-1,-1)
    GUICtrlSetData(-1,"")
    GUICtrlSetState(-1,144)
    GUICtrlSetTip(-1,"Bitte Schadensbild auswählen...")
    $cboSchadensgruppe = GUICtrlCreateCombo("",127,89,230,21,-1,-1)
    GUICtrlSetData(-1,"")
    GUICtrlSetState(-1,144)
    GUICtrlSetTip(-1,"Bitte Schadensgruppe auswählen...")
    $cboMassnahme = GUICtrlCreateCombo("",127,179,230,21,-1,-1)
    GUICtrlSetData(-1,"")
    GUICtrlSetState(-1,144)
    GUICtrlSetTip(-1,"Bitte Maßnahme auswählen...")
    $cboUrsache = GUICtrlCreateCombo("",127,149,230,21,-1,-1)
    GUICtrlSetData(-1,"")
    GUICtrlSetState(-1,144)
    GUICtrlSetTip(-1,"Bitte Ursache auswählen...")
    $cboObjektteil = GUICtrlCreateCombo("",127,59,230,21,-1,-1)
    GUICtrlSetData(-1,"")
    GUICtrlSetState(-1,144)
    GUICtrlSetTip(-1,"Bitte Objektteil auswählen...")
    $cboObjektgruppe = GUICtrlCreateCombo("",127,29,230,21,-1,-1)
    GUICtrlSetData(-1,"")
    GUICtrlSetTip(-1,"Bitte Objektgruppe auswählen...")
    GUICtrlCreateLabel("",372,62,106,15,-1,-1)
    GUICtrlSetColor(-1,"0x008000")
    GUICtrlSetBkColor(-1,"-2")
    $lblObjektgruppe = GUICtrlCreateLabel("bitte auswählen...",371,32,106,15,-1,-1)
    GUICtrlSetColor(-1,"0x008000")
    GUICtrlSetBkColor(-1,"-2")
    GUICtrlCreateLabel("",372,152,106,15,-1,-1)
    GUICtrlSetColor(-1,"0x008000")
    GUICtrlSetBkColor(-1,"-2")
    GUICtrlCreateLabel("",372,182,106,15,-1,-1)
    GUICtrlSetColor(-1,"0x008000")
    GUICtrlSetBkColor(-1,"-2")
    GUICtrlCreateLabel("",372,92,106,15,-1,-1)
    GUICtrlSetColor(-1,"0x008000")
    GUICtrlSetBkColor(-1,"-2")
    GUICtrlCreateLabel("",372,122,106,15,-1,-1)
    GUICtrlSetColor(-1,"0x008000")
    GUICtrlSetBkColor(-1,"-2")
    GUICtrlCreateLabel("Ursache",27,149,106,15,-1,-1)
    GUICtrlSetBkColor(-1,"-2")
    GUICtrlCreateLabel("Schadensbild",27,119,106,15,-1,-1)
    GUICtrlSetBkColor(-1,"-2")
    GUICtrlCreateLabel("Schadensgruppe",27,89,106,15,-1,-1)
    GUICtrlSetBkColor(-1,"-2")
    GUICtrlCreateLabel("Objektgruppe",27,29,106,15,-1,-1)
    GUICtrlSetBkColor(-1,"-2")
    GUICtrlCreateLabel("Objektteil",27,59,106,15,-1,-1)
    GUICtrlSetBkColor(-1,"-2")
    GUICtrlCreateLabel("Maßnahme",27,179,106,15,-1,-1)
    GUICtrlSetBkColor(-1,"-2")
    GUISetState(@SW_SHOW,$frmMain)
    _OpenDB()
    _GetData("tblObjektgruppen", "ObjGrpTxt", "", $cboObjektgruppe)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    ; Datenbank schliessen
    _CloseDB()
    ; Programm verlassen
    Exit
    Case $cboObjektgruppe
    ; Combobox des nächsten Level aktivieren
    GUICtrlSetState($cboObjektteil,$GUI_ENABLE)
    GUICtrlSetState($cboSchadensgruppe,$GUI_DISABLE)
    GUICtrlSetState($cboSchadensbild,$GUI_DISABLE)
    GUICtrlSetState($cboUrsache,$GUI_DISABLE)
    GUICtrlSetState($cboMassnahme,$GUI_DISABLE)
    ; Leere Combobox des nächsten Level
    GuiCtrlSetData($cboObjektteil, "")
    Case $cboObjektteil
    ; Combobox des nächsten Level aktivieren
    GUICtrlSetState($cboSchadensgruppe,$GUI_ENABLE)
    GUICtrlSetState($cboSchadensbild,$GUI_DISABLE)
    GUICtrlSetState($cboUrsache,$GUI_DISABLE)
    GUICtrlSetState($cboMassnahme,$GUI_DISABLE)
    ; Leere Combobox des nächsten Level
    GuiCtrlSetData($cboSchadensgruppe, "")
    Case $cboSchadensgruppe
    ; Combobox des nächsten Level aktivieren
    GUICtrlSetState($cboSchadensbild,$GUI_ENABLE)
    GUICtrlSetState($cboUrsache,$GUI_DISABLE)
    GUICtrlSetState($cboMassnahme,$GUI_DISABLE)
    ; Leere Combobox des nächsten Level
    GuiCtrlSetData($cboSchadensbild, "")
    Case $cboSchadensbild
    ; Combobox des nächsten Level aktivieren
    GUICtrlSetState($cboUrsache,$GUI_ENABLE)
    GUICtrlSetState($cboMassnahme,$GUI_DISABLE)
    ; Leere Combobox des nächsten Level
    GuiCtrlSetData($cboUrsache, "")
    Case $cboUrsache
    ; Combobox des nächsten Level aktivieren
    GUICtrlSetState($cboMassnahme,$GUI_ENABLE)
    ; Leere Combobox des nächsten Level
    GuiCtrlSetData($cboMassnahme, "")
    Case $cboMassnahme
    EndSwitch
    WEnd
    Func _OpenDB()
    ; SQLite starten
    _SQLite_StartUp()
    ; Datenbank öffnen
    $hDB = _SQLite_Open("StoerHier.s3db")
    EndFunc
    Func _CloseDB()
    ; Datenbank schliessen
    _SQLite_Close($hDB)
    ; SQLite beenden
    _SQLite_Shutdown()
    EndFunc
    Func _GetData($sTable, $sField, $sWhere, ByRef $cbo)
    Local $hQuery, $aRow, $sValue, $sSQL
    ; SQL-String zusammensetzen
    If $sWhere <> "" Then
    $sSQL = "SELECT " & $sField & " FROM " & $sTable & " " & $sWhere & " ORDER BY " & $sField
    Else
    $sSQL = "SELECT " & $sField & " FROM " & $sTable & " ORDER BY " & $sField
    EndIf
    ; Abfrage ausführen
    _SQLite_Query($hDB, $sSQL, $hQuery)
    While _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK
    ; Eintrag in Combobox schreiben
    GUICtrlSetData($cbo, BinaryToString($aRow[0], 4))
    WEnd
    EndFunc

    [/autoit]

    Die mit SQLite erstellte Datenbank habe ich auch angehangen.


    Vielen Dank für Deine Hilfe, Mike

  • Hallo .

    ich habe mit SQLiteAdmin hineingeschaut. Da werden die Umlaute zwar korrekt dargestellt ich weiss aber aus eigenen Projekten dass SQLiteAdmin sie verkehrt anzeigt während die eigene EXE es korrekt anzeigt. Nimm mal zu Testtwecken diese beiden Zeilen:

    [autoit]

    Func _OpenDB()
    ; SQLite starten
    _SQLite_Startup()
    ; Datenbank öffnen
    $hDB = _SQLite_Open("StoerHier.s3db")
    Local $aSql = 'INSERT into tblObjektgruppen (ObjGrp, ObjGrpTxt) VALUES (' & _SQLite_Escape('TT')&','& _SQLite_Escape('ÄÖÜäöüß') & ');' & @CRLF;<<=================
    Local $res = _SQLite_Exec(-1, $aSql) ;<<=================
    EndFunc ;==>_OpenDB

    [/autoit]

    in dein Skript auf und lass dir danach so die Werte anzeigen:

    Spoiler anzeigen
    [autoit]

    Func _GetData($sTable, $sField, $sWhere, ByRef $cbo)
    Local $hQuery, $aRow, $sValue, $sSQL
    ; SQL-String zusammensetzen
    If $sWhere <> "" Then
    $sSQL = "SELECT " & $sField & " FROM " & $sTable & " " & $sWhere & " ORDER BY " & $sField
    Else
    $sSQL = "SELECT " & $sField & " FROM " & $sTable & " ORDER BY " & $sField
    EndIf
    ; Abfrage ausführen
    _SQLite_Query($hDB, $sSQL, $hQuery)
    While _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK
    ; Eintrag in Combobox schreiben
    GUICtrlSetData($cbo, $aRow[0])
    WEnd
    EndFunc ;==>_GetData

    [/autoit]

    Alles deutet darauf hin dass das Erfassungstool deiner Daten und dein Programm nicht kompatibel sind.

    mfg autoBert

  • Hallo zusammen,


    vielen Dank für Eure Hinweise.


    Ich bin umgestiegen auf das Firefox Addon und habe die zu importierenden Textdateien in UTF-8 konvertiert. Nun funktioniert alles

    :thumbup:

    Thx, Mike