Hallo,
LibreOffice/ OpenOffice arbeiten mit UTF-8.
Ich weiß an dieser Stelle allerdings nicht, wie die Office interne Zeichenverarbeitung funktioniert.
ASCII oder UTF-8?
Weil in Makros die Runtime-Funktionen zum Einsatz kommen, welche eindeutig ASCII-basiert sind.
Ggf. ist dies ein Relikt aus alten StarOffice-Tagen.
https://de.wikipedia.org/wiki/American_ ... nterchange
https://de.wikipedia.org/wiki/ANSI-Zeichencode
https://www.torsten-horn.de/techdocs/ascii.htm
MS-Programme haben früher nur mit dem ASCII- und später mit dem erweiterten ANSI-Zeichensatz gearbeitet.
Wie das heute ist weiß ich nicht so genau.
Wenn Du mit Notepad den Windows-Editor meinst, dann empfehle ich Dir mal Notepad++ zu testen.
Hiermit können die Zeichenkodierungen direkt über die Menüleiste konvertiert werden.
https://notepad-plus-plus.org/downloads/
Wie gebe ich den Hex- oder dezimal-Code für das jeweilige Zeichen bei z. B. REPLACE an?
Alle Änderungen, welche ich im Makro vornehme, werden als ANSI erzeugt. Folglich in UTF-8 falsch interpretiert.
Mein Makro liefert das korrekte Ergebnis (bis auf einen kleinen Flüchtigkeitsfehler: siehe weiter unten
).
Im wesentlichen habe ich nur die beiden
ASCII-Runtime-Funktionen ASC() und
CHR() verwendet.
http://www.dannenhoefer.de/faqstarbasic ... ibtes.html
Wie gebe ich den Hex- oder dezimal-Code für das jeweilige Zeichen bei z. B. REPLACE an?
- ASCII → 65 → großes A
- UTF-8 → 65 → großes A
Code: Alles auswählen
Sub Main
' liefert das Zeichen
msgbox chr(65) & chr(10) _
& chr(228),64,"liefert das Zeichen"
' liefert den Dezimal-Code
msgbox asc("A") & chr(10) _
& asc("ä"),64,"liefert den Dezimal-Code"
' Verkettung von Zeichen
msgbox "Zeichenkette → " & chr(65) &chr(66) &chr(67) & chr(10) _
& "Dezimal-Code → " & asc("A") & " → " & asc("B") & " → " &asc("C") ,64,"Verkettung von Zeichen"
End Sub
----------------------------------------------------
�
dezimal → 65533
hexadezimal → 0
Da ist mir doch glatt ein Fehler passiert...
Korrekt ist:
hexadezimal → FFFD[/quote]
Korrigierter Code:
Code: Alles auswählen
REM ***** BASIC *****
Sub Main
sText="ä"
sText = Replace(sText,"ä","ä")
msgbox sText & Chr(10) _
& "dezimal → " & asc(sText) & chr(10) _
& "hexadezimal → " & hex(asc(sText)) & Chr(10) _
& Chr(10) _
& Chr(65533) & Chr(10) _
& "dezimal → " & asc(Chr(65533)) & chr(10) _
& "hexadezimal → " & hex(ASC("�")), 64, "Unicode" & " ↔ " & "Zeichen"
End Sub
---------------------------------------------------------------------------------
Alle Änderungen, welche ich im Makro vornehme, werden als ANSI erzeugt. Folglich in UTF-8 falsch interpretiert.
Mir ist weder Dein Code, noch Dein konkretes Vorgehen bekannt.
Mit Visual Studio (Editor) und mit VB/ VBA wird hier nicht programmiert, sondern
mit der Basic-IDE und der Sprache StarBasic.
Wobei die Sprache Starbasic abhängig von der ausgeführten Applikation (Writer/ Calc/, usw.) ist.
Mehr weiß ich nicht zu diesem Thema.