Seite 1 von 1

Unicode / UTF8 Problem

Verfasst: 03.01.2014 01:22
von MenschMarkus
Hallo zusammen,

erst mal ein guten neues Jahr.

Ich habe da ein kleines Problem mit Sonderzeichen respektive mit der Darstellung bzw Übertragung von Unicode / UTF8 Zeichen.
Ich möchte aus einer Textdatei arabische Textzeichen einlesen. Trotz Einstellung auf UTF8 in der IDE und entsprechender Compilierung in Unicode sehe ich nur ????????.

Hier mal ein Auszug.

Code: Alles auswählen

source.s = "<NAME_ORIGINAL_SCRIPT>الجماعة التونسية المقاتلة</NAME_ORIGINAL_SCRIPT>"  ;Originaltext aus Unicode.txt mit Strg+C und Strg+V  erzeugt
Debug source.s    ; funktioniert schon im Debug Fenster nicht
tmp = OpenFile(0,"unicode.txt")
Debug tmp
strTMP.s + ReadString(0,#PB_UTF8)
Debug "strTMP.s = " + strTMP.s
CloseFile(0)
Es liegt nicht daran, das PB diese Zeichen nicht darstellen kann. Ein mit STRG+C kopierter String aus der Textdatei und mit STRG+V kopierter String in der PB IDE wird korrekt dargestellt.
Wie ich feststellen musste, kann der Debugger leider keine Unicode / UTF8 Zeichen darstellen (siehe obiges Beispiel). Leider.
Den String möchte ich in eine DB schreiben. Alle Versuche mit

Code: Alles auswählen

ReadString(0,#PB_UTF8)
bzw.

Code: Alles auswählen

BOM = ReadStringFormat(0) 
ReadString(0,BOM)
sind misslungen. Ich erhalte immer nur ??????????????????????

Wo ist da mein Denkfehler ?
Sollte das schon einmal besprochen worden sein, bitte ein Link auf den Beitrag.
Danke schon mal dafür.

menschmarkus

Re: Unicode / UTF8 Problem

Verfasst: 03.01.2014 02:30
von Danilo
MenschMarkus hat geschrieben:

Code: Alles auswählen

source.s = "<NAME_ORIGINAL_SCRIPT>الجماعة التونسية المقاتلة</NAME_ORIGINAL_SCRIPT>"  ;Originaltext aus Unicode.txt mit Strg+C und Strg+V  erzeugt
Debug source.s    ; funktioniert schon im Debug Fenster nicht
Du hast es doch schon selbst beantwortet: Der Debugger kann es nicht. Warum nimmst Du dann weiter den Debugger zur Ausgabe?
Es kommt auch noch darauf an, ob der benutzte Font die entsprechenden UNICODE-Zeichen enthält.

Code: Alles auswählen

source.s = "<NAME_ORIGINAL_SCRIPT>الجماعة التونسية المقاتلة</NAME_ORIGINAL_SCRIPT>"  ;Originaltext aus Unicode.txt mit Strg+C und Strg+V  erzeugt
Debug source.s    ; funktioniert schon im Debug Fenster nicht

MessageRequester("Info",source) ; das funktioniert

Re: Unicode / UTF8 Problem

Verfasst: 03.01.2014 02:53
von HeX0R
Der eigenständige Debugger sollte es auch korrekt anzeigen können.

Re: Unicode / UTF8 Problem

Verfasst: 03.01.2014 14:39
von _sivizius
auch wenn man Unicode eingestellt hat werden die Strings als ASCII gespeichert. Das kann man sich einfach anschauen, wenn man eine Assemblerausgabe erzeugt. bei der Ausführung wird daraus erst Unicode im RAM. Du könntest es also mit:

Code: Alles auswählen

DataSection
  UnicodeString:
  Data.u char0
  Data.u char1
  Data.u char2
  ...
  Data.u 0
EndDataSection
mal probieren.

Re: Unicode / UTF8 Problem

Verfasst: 03.01.2014 17:52
von NicTheQuick
_sivizius hat geschrieben:auch wenn man Unicode eingestellt hat werden die Strings als ASCII gespeichert.
Das stimmt nicht, wenn man seinen Code mit UTF-8 speichert. Und das wurde hier auch schon gesagt.

Re: Unicode / UTF8 Problem

Verfasst: 03.01.2014 23:03
von MenschMarkus
Danke für Eure posts.

Es war erst mal sehr hilfreich für mich zu sehen, ob ich den String überhaupt korrekt aus der Datei auslesen konnte.
Dank MessageRequester konnte ich das jetzt positive prüfen. :allright:

Jetzt muss ich zusehen ob dieser String auch in meine Datenbank korrekt übertragen und wieder ausgelesen werden kann.
Da es keine Standard Datenbank ist muss ich den Hersteller anfragen.

Danke nochmals für Eure Unterstützung.

Re: Unicode / UTF8 Problem

Verfasst: 03.01.2014 23:09
von _sivizius
NicTheQuick hat geschrieben:
_sivizius hat geschrieben:auch wenn man Unicode eingestellt hat werden die Strings als ASCII gespeichert.
Das stimmt nicht, wenn man seinen Code mit UTF-8 speichert. Und das wurde hier auch schon gesagt.
es geht ja auch nicht um den code, sondern um die asm-ausgabe

Re: Unicode / UTF8 Problem

Verfasst: 04.01.2014 00:58
von MenschMarkus
Also, mit SQLITE funktioniert schreiben und lesen. War auch nicht anders zu erwarten.
Soweit ich weiß kann man bei der SQLITE einen einzelnen Satz einer Tabelle nicht sperren, was eine Mehrbenutzerapplikation wohl unmöglich macht ohne das Risiko eines Chaos einzugehen.

ODER ?

Re: Unicode / UTF8 Problem

Verfasst: 04.01.2014 01:15
von Kiffi
@MenschMarkus: SQLite ist eigentlich eher für Einzelanwender-Applikationen gedacht.
Kommt darauf an, wie viele Leute *gleichzeitig* auf die Datenbank zugreifen.

Einen einzelnen Datensatz könnte man indirekt sperren, indem man beispielsweise eine
zusätzliche Spalte 'Lock' (Typ: Boolean; Standardwert: False) in die Tabelle einfügt.
Bearbeitet jemand einen Datensatz, so setzt Du vorher den Wert dieses Datensatzes auf
True. Ist die Bearbeitung abgeschlossen, so setzt Du den Wert auf wieder False.

Aber wie geschrieben: Wenn viele Leute mit der DB arbeiten wollen, bist Du mit einem
DB-Server (wie SQL Server, mySQL, PostgreSQL, ö. ä.) besser beraten.

Grüße ... Kiffi

Re: Unicode / UTF8 Problem

Verfasst: 06.01.2014 20:07
von MenschMarkus
@Kiffi

Danke für den Vorschlag Kiffi.
Ich hatte mich ursprünglich für SQLite entschieden, da es keinerlei Installation im System benötigt und auch nur eine Person damit arbeiten sollte.

Soweit ich mich entsinnen kann benötigen die von Dir angesprochenen DB's eine Installation, sei es eine eigenständige oder über ODBC oder so.
Das ist aus meiner Sicht ein Risiko für Fehlfunktionen die in Abhängigkeit von Systemkonfiguration bla bla ...

Ich hatte mich für eine Standalone DB entschieden (Apollo) in der die DB Engine in der DLL mit eingebaut ist. Also nur eine DLL mitliefern und geht. Die kostet zwar etwas aber sie ist schnell und bietet alle Features der o.g. DB und einige FastTextSearch features mehr. Einmal Lizenz gekauft kann ich Sie in beliebig vielen Programmen einsetzen.

Leider bekomme ich, sobald ich Unicode in PB einschalte keine Daten mehr in die DB. Und noch einige Merkwürdigkeitn mehr, aber das ist ein anderes Thema was nur hierher gehört wenn jemand das gleiche Problem mit der Apollo DB unter PB hat.

menschmarkus