Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1172to1176
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Fragezeichen wird verschoben

Fragezeichen wird verschoben
Jens
Hallo,
ich sitze gerade an einer Umwandlung einer Tabelle mit Hebräischem Inhalt. In einer Zelle steht ein hebräischer Text mit einem Fragezeichen am Ende des Satzes.
Wenn ich diesen als UTF8 speichern möchte (mit https://www.herber.de/forum/archiv/812to816/t812519.htm)
lese ich den String der Zelle ein und sende diesen an die Funktion GetUTF8String(). Die Funktion übersetzt alles richtig.
Jedoch folgendes Problem.
Der Text hat folgendes Format "?Wort4 Wort3 Wort2 Wort1". Der Satz ist von rechts zu lesen. So steht es in der Zelle. Starte ich jedoch meine VBA Routine und lese die Zelle in einen String ein (Wert_Text = Cells(i, 3) & ", """ & Cells(i, 13) & """" & vbCrLf) steht jedoch in dem String Wert_Text folgendes drin:
"Wort4 Wort3 Wort2 Wort1?". Sprich das Fragezeichen steht am Anfang des Hebräischen Satzes - was ja falsch ist.
Gibt es eine Möglichkeit (in HTML glaub ich ‎, ‏) für links und rechtsbündige Fragezeichen oder was ist mein Problem?
Ich bin für jeden Tipp dankbar!
Viele Grüße Jens
AW: Fragezeichen wird verschoben
31.08.2010 07:53:19
Jens
Hallo Micha,
HTML hat rein garnix mit meinem Problem zu tun.
Hab ich entdeckt, dass es in HTML so etwas gibt (ein von rechts-nach-links Fragezeichen). Ich dachte vielleicht gibt es so etwas auch als UTF8/UTF16 Code und ich könnte dieses suchen und ersetzen.
Nur weiß ich nicht wie ich weitermachen soll, da mir das Verständnis dafür fehlt, warum der eingelesene String auf einmal das Fragezeichen verschoben darstellt.
Viele Grüße Jens
Anzeige
AW: Fragezeichen wird verschoben
31.08.2010 08:05:17
MichaV
Hallo Jens,
ich weiss zwar nicht ob eine Beispielmappe mit Beispieltext hier was bringt (hebräisch und so), aber ich befürchte ohne Beispielmappe kann nur jemand eine Antwort geben der sich genau damit schonmal beschäftigt hat. Und das sind nicht viele.
Ich denke es ist wirklich so ein rtl-ltr Darstellungsproblem. Der Originaltext hat das Fragezeichen vlt. auch hinten, wird aber andersherum dargestellt (duch die Schriftart vlt?). Nur wie gesagt, ohne Bsp ist das ganz schwer nachzuvollziehen.
Gruss- Micha
Fragezeichen wird verschoben (UTF8/UTF16)
31.08.2010 09:19:20
Jens
Hallo,
ich habe mal eine Beispielmappe erstellt. https://www.herber.de/bbs/user/71321.xls
Dort sind auch die verwendeten Macros hinterlegt. Mit der Routine "Hebrew_erstellen" möche ich den Text aus Zelle1 + Zelle2 als UTF8/UTF16 Code in die Datei "C:\Temp\Text_Hebrew.txt" schreiben.
Dazu verwende ich die Funktion GetUTF8String() und übergebe der Funkt. den String (Zelle1+Zelle2). Dieser soll umgewandelt werden und dann in die Textdatei geschrieben werden.
Jedoch ist bereits beim Einlesen der Zelle2 (Spalte4 - Hebräisch) das Problem, dass das Fragezeichen am Ende, statt am Anfang erscheint.
Wie kann ich das so umändern, dass auch das Fragezeichen links stehen bleibt, wie es bereits in der Originalzelle steht (siehe dazu auch Bild https://www.herber.de/bbs/user/71320.jpg)
Vielen Dank für eure Hilfe!
VG Jens
Anzeige
AW: Fragezeichen wird verschoben
31.08.2010 15:54:30
Jens
?kann niemand helfen?
Danke!
Es gibt leider immer mal Probleme, die man...
31.08.2010 17:01:11
Luc:-?
…selber lösen muss, Jens,
weil sie so speziell sind, dass sie noch kaum einer hatte…
Du scheinst hiermit hier der Erste zu sein → gratuliere…! ;-)
Gruß Luc :-?
AW: Es gibt leider immer mal Probleme, die man...
31.08.2010 17:08:16
MichaV
hehe, schön gesagt, Luc, ich habs ja schonmal angedeutet.
@Jens: Ich dachte Du bist off und schaust erst morgen wieder rein. Darum schnell meine Fragen (kann Dir nicht versprechen dass ich die Lösung finde, aber ich finds spannend)
- Du schriebst was von Zelle 2 und 3, kannst Du das bitte genauer referenzieren? Die Fragezeichen finde ich in Zellen D9, D11 und D19. Wenn ich das durch das Makro als csv abspreichere und die csv als Textdatei öffne, steht das Fragezeichen rechts, und nicht mehr links. Das ist das Problem, stimmts? Wenn man die csv wieder mit Excel öffnet steht es plötzlich wieder links, also ist es eine Darstellungsgeschichte oder Excel wandelt das intern wieder um.
Wo kommt der Text denn her, vl. von einer Webseite importiert? Kann es vlt. sein dass Dein umgewandelter Text auch wieder in so eine Webseite kommt und dort vlt. wieder richtigherum dargestellt wird?
Gruss- Micha
Anzeige
sry, noch offen
31.08.2010 18:51:12
MichaV
AW: sry, noch offen
01.09.2010 08:44:06
Jens
Hallo,
@Luc: erstmal Danke Luc, für deine tröstenden Worte - ich nehme es mir zu Herzen und arbeite dran - Lösung präsentiere ich hier!
@Micha: Danke für deine Hilfe! Ja genau das ist das Problem. Das Fragezeichen sthet einfach nach dem Exportieren bzw. bereits beim ausführen des Macros falsch drin. (sText = Cells(i,4) = dort steht das Fragezeichen bereits an der falschen Stelle)
Der Text aus der Spalte D (Hebräisch) wird aus Word (STRG+C - STRG+V) eingefügt. Dies ist die Grundlage für ein C++ Programm (die Textdatei diehnt als rc-Container).
Ich dachte schon ich stelle es schlau an und ersetze jedes Fragezeichen mit einer nicht vorkommenden Kombination aus Buchstaben (z.B. "?" = "xyz?xyz". Dann mit dem Macro die txt Datei erzeugt und dann in einem Editor wieder "rückersetzen". Bevor ich im Editor "rückersetze" steht das ? an der richtigen Stelle. Sobald ich es jedoch ersetzt habe, steht es wieder hinten.
Dies scheint bei Sätzen, indenen das Fragezeichen am Schluß vorkommt ja recht banal - einfach Fragezeichen am ende dedektieren und am Anfang das Anführungszeichen mit Anführungszeichen + Fragezeichen ersezten. Dies klappt natürlich nur bei Cellen, wo ein Fragezeichen drin vorkommt - bei mehreren - Problem!
So ich hoffe die Verwirrung ist noch im Rahmen?!
DANKE!
VG Jens
Anzeige
Bitte! Gern geschehen! ;-) owT
02.09.2010 08:26:09
Luc:-?
:-?
AW: Fragezeichen wird verschoben
03.09.2010 14:25:08
Jens
Die Lösung ist eine Rechts-Links-Zwang in der GetUTF8String Funktion der folgenden Zeichen zu erzwingen!
' Rechts-nach-links-Einbettung
UTF16 = 8238
uc(2) = &H80 + (UTF16 And &H3F) ' Least Significant 6 bits
UTF16 = UTF16 \ &H40 ' Shift UTF16 number right 6 bits
uc(1) = &H80 + (UTF16 And &H3F) ' Use next 6 bits
UTF16 = UTF16 \ &H40 ' Shift UTF16 number right 6 bits again
uc(0) = &HE0 + (UTF16 And &HF) ' Use 4 remaining bits
GetUTF8String = GetUTF8String & Chr(uc(0)) & Chr(uc(1)) & Chr(uc(2))
VG Jens

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige