Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 17.01.2024, 17:47 Titel: Buchstaben einer Textdatei (UTF-8 Format) umwandeln |
|
|
Welche Möglichkeiten habe ich, um mit einem FreeBasic Programm den Inhalt einer UTF-8 Datei in ANSI zu konvertieren?
Folgendes Problem besteht: Ich habe eine Textdatei im UTF-8 Format! Die Sonderzeichen Ä, Ü, Ö, ß, ... werden auf dem Bildschirm falsch dargestellt. Nicht gut für mich. Ich muss die Buchstaben irgendwie mit einem selber geschriebenen FreeBasic Programm konvertieren können. Auf das Format der Textdatei habe ich keinen Einfluss!
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05
Zuletzt bearbeitet von ALWIM am 17.01.2024, 20:53, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 17.01.2024, 20:49 Titel: Re: Zeichensatz oder Line Endings mit Notepad++ umwandeln |
|
|
Sebastian hat Folgendes geschrieben: | Hi Alwim,
zum Beispiel das quelloffene Notepad++ kann das ganz leicht!
https://de.m.wikipedia.org/wiki/Notepad%2B%2B
Oder möchtest du das in deinem Programm automatisieren?
Dann würde ich die relevanten Zeichen, z. B. die paar Umlaute, mit String-Funktionen (MID$ usw.) ersetzen.
Eine Bibliothek für volle Unicode-Unterstützung in QB ist mir nicht bekannt.
Viele Grüße!
Sebastian | Ja, ich muss das in meinem Programm automatisieren! Mit MID die Zeichen ersetzen dauert zu lange. Bei 2000 Namen (Vor- und Nachname) wenig sinnvoll. Dann kommen zu den 2000 Namen, nochmals 2000 Wörter dazu! Mit MID geht schlecht. Ich weiß ja zudem nicht einmal, welche Zeichen überhaupt in der Datei mit drin sind? Das könnten theoretisch alle Buchstaben sein. QB? Ich arbeite mit FreeBasic. _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1231 Wohnort: Ruhrpott
|
Verfasst am: 18.01.2024, 01:18 Titel: |
|
|
Hallo ALWIM
Probier mal, ob das hier dein Problem löst (nur für Windows): Code: | #Include Once "windows.bi"
Function ansi2ascii(text As String) As String
'wandelt Sonderzeichen vom ansi- ins ascii-Format
Dim As String g
g = text
OemToChar(g,g)
Return g
End Function
Function ascii2ansi(text As String) As String
'wandelt Sonderzeichen vom ascii- ins ansi-Format
Dim As String g
g = text
CharToOem(g,g)
Return g
End Function |
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 18.01.2024, 17:07 Titel: |
|
|
grindstone hat Folgendes geschrieben: | Hallo ALWIM
Probier mal, ob das hier dein Problem löst (nur für Windows): Code: | #Include Once "windows.bi"
Function ansi2ascii(text As String) As String
'wandelt Sonderzeichen vom ansi- ins ascii-Format
Dim As String g
g = text
OemToChar(g,g)
Return g
End Function
Function ascii2ansi(text As String) As String
'wandelt Sonderzeichen vom ascii- ins ansi-Format
Dim As String g
g = text
CharToOem(g,g)
Return g
End Function |
Gruß
grindstone | Das war das allererste, was ich probiert habe! Funktioniert bei einer Datei im UTF-8 Format nicht. _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1231 Wohnort: Ruhrpott
|
Verfasst am: 19.01.2024, 10:00 Titel: |
|
|
Dann kann ich dir aus meinem Fundus noch das hier anbieten:
Code: | #Include Once "utf_conv.bi"
Function UTF(s As String) As String
Dim As String sUTF
Dim As Integer numberOfBytes
sUTF = String(Len(s) * 2, " ")
CharToUTF(UTF_ENCOD_UTF8, StrPtr(s), Len(s), StrPtr(sUTF), @numberOfBytes)
Return Left(sUTF, numberOfBytes)
End Function
Function Char(s As String) As String
Dim As String sChar
Dim As Integer numberOfBytes
numberOfBytes = Len(s)
sChar = String(numberOfBytes, " ")
UTFToChar(UTF_ENCOD_UTF8, StrPtr(s), StrPtr(sChar), @numberOfBytes)
Return Left(sChar, numberOfBytes)
End Function |
Die in der utf_conv.bi deklarieten Funktionen sind offenbar Bestandteil der FB-Laufzeitbibliothek, also sollten diese Schnipsel auch unter Linux laufen.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 19.01.2024, 17:33 Titel: |
|
|
grindstone hat Folgendes geschrieben: | Dann kann ich dir aus meinem Fundus noch das hier anbieten:
Code: | #Include Once "utf_conv.bi"
Function UTF(s As String) As String
Dim As String sUTF
Dim As Integer numberOfBytes
sUTF = String(Len(s) * 2, " ")
CharToUTF(UTF_ENCOD_UTF8, StrPtr(s), Len(s), StrPtr(sUTF), @numberOfBytes)
Return Left(sUTF, numberOfBytes)
End Function
Function Char(s As String) As String
Dim As String sChar
Dim As Integer numberOfBytes
numberOfBytes = Len(s)
sChar = String(numberOfBytes, " ")
UTFToChar(UTF_ENCOD_UTF8, StrPtr(s), StrPtr(sChar), @numberOfBytes)
Return Left(sChar, numberOfBytes)
End Function |
Die in der utf_conv.bi deklarieten Funktionen sind offenbar Bestandteil der FB-Laufzeitbibliothek, also sollten diese Schnipsel auch unter Linux laufen.
Gruß
grindstone | @All: Vielen herzlichen Dank für die zahlreiche Hilfe! Mit der Bibliothek konnte ich was anfangen. Musste dann zum Schluss, nur noch "CharToOem" anwenden, um auf das gewünschte Ergebnis zu kommen. _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
HorstD
Anmeldungsdatum: 01.11.2007 Beiträge: 110
|
Verfasst am: 19.01.2024, 20:05 Titel: |
|
|
Code: |
Dim t As String
Open "d:\utf8.txt" For Input Encoding "UTF8" As #1
Open "d:\ansi.txt" For Output As #2
While Not Eof(1)
Line Input #1, t
Print #2, t
Wend
Close
|
|
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4642 Wohnort: ~/
|
Verfasst am: 20.01.2024, 01:35 Titel: |
|
|
Ich muss zugeben, ich bin überrascht, dass das funktioniert ... _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 22.01.2024, 03:15 Titel: |
|
|
nemored hat Folgendes geschrieben: | Ich muss zugeben, ich bin überrascht, dass das funktioniert ... | Ich nicht! Ich hatte die gleiche Idee. Nur kann ich die nicht verwenden, da ich sonst eine zusätzliche Datei habe. Der direkte Umwandlungsweg gefällt mir besser. _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
|