Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Buchstaben einer Textdatei (UTF-8 Format) umwandeln

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 17.01.2024, 17:47    Titel: Buchstaben einer Textdatei (UTF-8 Format) umwandeln Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 17.01.2024, 20:26    Titel: Zeichensatz oder Line Endings mit Notepad++ umwandeln Antworten mit Zitat

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
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 17.01.2024, 20:49    Titel: Re: Zeichensatz oder Line Endings mit Notepad++ umwandeln Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 17.01.2024, 21:45    Titel: Re: Zeichensatz oder Line Endings mit Notepad++ umwandeln Antworten mit Zitat

ALWIM hat Folgendes geschrieben:
Ich arbeite mit FreeBasic.

Ach, stimmt, hab ich überlesen!

Unter FreeBASIC hast du da viel mehr Möglichkeiten:

_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1211
Wohnort: Ruhrpott

BeitragVerfasst am: 18.01.2024, 01:18    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 18.01.2024, 17:07    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1211
Wohnort: Ruhrpott

BeitragVerfasst am: 19.01.2024, 10:00    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 19.01.2024, 17:33    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
HorstD



Anmeldungsdatum: 01.11.2007
Beiträge: 107

BeitragVerfasst am: 19.01.2024, 20:05    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4597
Wohnort: ~/

BeitragVerfasst am: 20.01.2024, 01:35    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 22.01.2024, 03:15    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz