windows umlaute unter dos drucken

koma666

Mitglied
Hi schon wieder ich, ich hab hier ein text file, wenn ich das unter Dos drucke dann sind die umlaute komische sonderzeichen.

die txt datei erstell ich mit vb, writeline

jetzt hab ich schon was gefunden, nämlich die WintoDos$(uebersetz$),
der spass geht aber nur mit vba, weis jemand wie ich das in VB mach ?
 
ich glaube, das liegt daran, dass windows für die dos-konsole die codeseite 850 als zeichensatz benutzt, aber ausserhalb der dos-konsole den typischen ansi-zeichensatz. ich bin mir zwar nicht wirklich sicher, aber im zweifelsfall kannst du ja einfach mal die dezimalwerte deiner umlaute ausgeben lassen.

codeseite 850:
ä = 132; Ä = 142; ö = 148; Ö = 153; ü = 154

ansi:
ä = 228; Ä = 196; ö = 246; Ö = 214; ü = 252; Ü = 220; ß = 223
 
hab mir ne funktion gebastelt, die alle sonderzeichen ins dos "übersetzt"
wens interessiert oder wers braucht, damit er ned so viel tippen muss *g*
hier ist sie.
wenn einer nen fehler findet gleich sagen


Private Function replace_uml(ByRef t) As Boolean
asciiarr = Array(18, 19, 22, 23, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 181, 182, 183, 184, 189, 190, 198, 199, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 148)
ansiarr = Array(137, 134, 135, 133, 202, 199, 252, 233, 226, 228, 224, 229, 231, 234, 235, 232, 239, 238, 236, 196, 197, 201, 230, 198, 244, 246, 251, 249, 255, 214, 220, 162, 163, 204, 195, 221, 225, 237, 243, 250, 241, 209, 208, 240, 194, 174, 172, 138, 154, 253, 219, 190, 185, 222, 254, 180, 145, 136, 149, 168, 166, 227, 179, 186, 175, 215, 171, 184, 191, 146, 169, 216, 164, 161, 129, 128, 173, 247, 151, 223, 152, 153, 188, 155, 181, 177, 150, 157, 144, 147, 148, 248, 170, 200, 206, 205, 217, 218, 213, 245, 211, 192, 176, 193, 183, 212, 210, 203, 207, 246)
Text = ""
For u = 1 To Len(t)
buchstabe = Mid(t, u, 1)
For i = 0 To UBound(asciiarr)
If Asc(buchstabe) = ansiarr(i) Then
buchstabe = Chr(asciiarr(i))
Exit For
End If
Next
Text = Text & buchstabe
Next
t = Text
replace_uml = True
End Function
 
Zurück