Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 12.04.2008, 13:53 Titel: Umlaute auf Grafik-SCREEN |
|
|
Hallo,
ich möchte ein FreeBasic-Programm gerne auch unter Linux (Debian 4) ablaufen lassen. Das Compilieren und Ausführen klappt soweit auch ohne Probleme, aber die Umlaute werden im SCREEN-Fenster leider falsch dargestellt:
Das Seltsame ist, dass die Zeichen über INKEY abgefragt wurden. Das heißt, es ist nicht irgendein anderer Zeichensatz aus einem Editor.
Code: | 'Der Code ist nur hier im Forumeingabefeld kurz als Beispiel
'geschrieben worden und enthält möglicherweise Tippfehler.
DIM AS STRING Test, Taste
SCREEN 12
Test = ""
DO
Taste = INKEY
IF Taste <> "" Then
If Taste = CHR(27) THEN
Exit Do
Else
Test += Taste
End If
End If
Loop
PRINT Test
SLEEP |
So eingegebene Umlaute würden falsch ausgegeben (wie oben). Was kann man da machen? Gibt es unter Linux auch Zeichensatzkonvertierungsroutinen wie CharToOEM / OEMToChar unter Windows?
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 12.04.2008, 15:45 Titel: |
|
|
Hallo!
HerbertSoftware hat Folgendes geschrieben: | Unter Debian gibt es den Befehl:
dpkg-reconfigure locales
Prüfe ob dort ein
de_DE@euro ISO-8859-15
de_DE ISO-8859-1
angekreuzt ist. |
Beides war nicht angekreuzt. Das hab ich jetzt geändert und de_DE als Standard ausgewählt, aber leider hat das an dem Umlautproblem nichts geändert.
Zitat: | Bitte gib mal in der Kommandozeile in der Du es aufrufst folgendes ein:
echo $TERM |
xterm
Zitat: | Weiters wäre evtl. auch ein
echo $SHELL
hilfreich. |
/bin/bash
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 12.04.2008, 15:48 Titel: |
|
|
Lass dir doch mal die ASCII-Codes von den Umlauten bei Inkey ausgeben. FB hat ja im Screenmodus schließlich seine eigene Codepage. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 12.04.2008, 18:10 Titel: |
|
|
Frag am besten im englischen Forum nach, weil mir kommt das spanisch vor.. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 13.04.2008, 11:11 Titel: |
|
|
Wenn du die Lösung hast, sag Bescheid - ich habe das Problem auch schon von Anfang an ... (habe es bisher umgangen, indem ich ae, oe und ue verwende ) _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 13.04.2008, 15:05 Titel: |
|
|
Hallo,
ich habe das Problem nun wie folgt gelöst:
Zunächst ist mir aufgefallen, dass die Codes, die eingegeben werden, anscheinend Windows-artig zugeordnet sind (ANSI). Will man aber Text ausgeben, muss dies im ASCII-Zeichensatz geschehen. Also habe ich eine Tabelle erstellt, die jedem Zeichen den zugehörigen ASCII-Code zuordnet: http://www.freebasic-portal.de/index.php?s=fbporticula&mode=show&id=557
Nun muss man vor dem Ausgeben des Texts (siehe Beispiel ganz am Anfang) noch die Buchstaben des Strings Test immer durch den über die Tabelle zugeordneten ASCII-Code ersetzen. Dann werden auch eingegebene Umlaute richtig angezeigt.
Beispiel:
Code: | #include "tabelle-aus-nopaste.bas"
Function Zeichensatzkorrektur (ByVal Text As String) As String)
Dim As String temp=""
Dim As Integer i
Dim As UByte bs
FOR i = 0 TO LEN(Text)-1
bs = Text[i]
temp += CHR(ZTab(bs))
Next i
RETURN temp
End Function
DIM AS STRING Test, Taste
SCREEN 12
ZeichensatzkorrekturLinuxInit '<= Tabelle initialisieren
Test = ""
DO
Taste = INKEY
IF Taste <> "" Then
If Taste = CHR(27) THEN
Exit Do
Else
Test += Taste
End If
End If
Loop
PRINT Zeichensatzkorrektur(Test)
SLEEP |
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 13.04.2008, 15:13 Titel: |
|
|
jetzt könntest du natürlich noch code sparen, indem du das so machst...
Code: |
'zuerst die regelmäßigen zuordnungen
for i as integer = 0 to 255
ZTab(i)=i
next
'jetzt die unregelmäßigen zuordnungen
ZTab(x)=y
|
_________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 13.04.2008, 15:28 Titel: |
|
|
Damit passt es aber schon mal nicht mehr in ein 4k-Intro
Code verkleinern ist IMMER wichtig XD _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 13.04.2008, 17:46 Titel: |
|
|
In diesem Fall reicht ja ein
Code: | for i as integer = 0 to 127
ZTab(i)=i
next
ZTab(128)=95
[...] |
Spart Code ohne überflüssige Rechenschritte.
Das § und das € stimmen bei mir noch nicht, aber ich muss sowieso mal schauen wie/ob ich es füt UTF8 umbauen kann.
edit:
unter Western 15 enthält bei mir das €-Zeichen. Aber ich finde keine Ausgabe für § _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 13.04.2008, 19:20 Titel: |
|
|
Einmal generell gefragt: Ob im FreeBasic-Entwicklungsteam nicht bereits Bestrebungen im Gang sind, künftig alles als Unicode zu handhaben? Scheint aus meiner Sicht langfristig sinnvoller als weiss ich wie lange noch den DOS-Zeichensatz als Rückwärtskompatibilitätsrelikt mitzuschleppen...
Wäre evtl. ein sinnvoller "Feature Request"! _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
Klößchn 1x verwarnt
Anmeldungsdatum: 22.03.2008 Beiträge: 77 Wohnort: Donauwörth
|
Verfasst am: 14.04.2008, 15:09 Titel: |
|
|
dreael hat Folgendes geschrieben: | Wäre evtl. ein sinnvoller "Feature Request"! |
Soll das heißen, man kann auch Funktionen anfordern? Das ist ja cool :]
Aber ist Unicode nicht durch W- (wide) Strings bereits integriert? |
|
Nach oben |
|
|
|