Sehr geehrte Community,
Um was es geht:
Viele komplizierte Sachen, doch ich glaube, die helfen, das Ganze besser zu verstehen...
Im Rahmen meiner gymnasialen Abschlussarbeit baue und programmiere ich eine Lego-Mindstorms-Roboter in Java.
Dieser Roboter soll Texte in einer Schrift schreiben können, die sich Tengwar nennt (für den Fantasy-Fan: Ja, das ist die Schrift der Elben vom Herrn der Ringe). Diese Schrift ist ziemlich unbekannt und somit nicht in der Unicode-Tabelle enthalten; es gibt aber Fonts, um diese Schrift darstellen zu können. Ein Schriftzug mit einem solchen Font ist der Input für mein Java-Programm.
Da, wie gesagt, diese Zeichen nicht in der Unicode-Tabelle enthalten sind und die Tastaturbelegung nicht mit der "unsrigen" normalen übereinstimmt, ist der eigentliche Input ein ziemlich abstrakter String. Der Schriftzug für "Lego" etwa wird in dieser Form eingelesen: "jx$`N".
Ich möchte nun eine switch-Struktur, bei dem für jedes Zeichen ein anderer case durchgeführt werden soll. Da die switch-Anweisung bekanntlich nicht mit Strings funktioniert, möchte ich mit der charAt-Methode einen zeichenspezifischen Integer-Wert bekommen.
Programmcode eines Testprogramms, das den Unicode-Wert eines (jeweils nur 1 Zeichen langen) Strings ausgeben soll:
(Es geht hier hauptsächlich um die Zeile 19)
Mein Problem:
Das Ganze klappt ja ganz ordentlich, bei den einen Zeichen zumindest... Doch bei vielen Zeichen kommt immer derselbe Output, nämlich 65533 (Einer der hintersten möglichen Unicode-Werte).
Fehlerhafte Zeichen sind u.a. ª µ † und viele andere...
Wär echt froh, wenn mir da jemand helfen könnte, eventuell auch mit einer ganz anderen Variante?
Mit freundlichen Grüssen,
Finrod Amandil
EDIT:
Folgende Zeichen funzen nicht (inkl. zu erwartender Unicode-Wert)
ª (170)
¯ (175)
µ (181)
ƒ (131)
… (133)
„ (132)
† (134)
Ô (212)
Õ (213)
und weitere
Um was es geht:
Viele komplizierte Sachen, doch ich glaube, die helfen, das Ganze besser zu verstehen...
Im Rahmen meiner gymnasialen Abschlussarbeit baue und programmiere ich eine Lego-Mindstorms-Roboter in Java.
Dieser Roboter soll Texte in einer Schrift schreiben können, die sich Tengwar nennt (für den Fantasy-Fan: Ja, das ist die Schrift der Elben vom Herrn der Ringe). Diese Schrift ist ziemlich unbekannt und somit nicht in der Unicode-Tabelle enthalten; es gibt aber Fonts, um diese Schrift darstellen zu können. Ein Schriftzug mit einem solchen Font ist der Input für mein Java-Programm.
Da, wie gesagt, diese Zeichen nicht in der Unicode-Tabelle enthalten sind und die Tastaturbelegung nicht mit der "unsrigen" normalen übereinstimmt, ist der eigentliche Input ein ziemlich abstrakter String. Der Schriftzug für "Lego" etwa wird in dieser Form eingelesen: "jx$`N".
Ich möchte nun eine switch-Struktur, bei dem für jedes Zeichen ein anderer case durchgeführt werden soll. Da die switch-Anweisung bekanntlich nicht mit Strings funktioniert, möchte ich mit der charAt-Methode einen zeichenspezifischen Integer-Wert bekommen.
Programmcode eines Testprogramms, das den Unicode-Wert eines (jeweils nur 1 Zeichen langen) Strings ausgeben soll:
Java:
import java.io.*;
public class Unicode {
public static void main(String[] args) {
String eingabe = null;
//Einlesen
BufferedReader reader;
reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Input: ");
try{
eingabe = reader.readLine();
}
catch (IOException ioe){
System.out.println("Fehler beim Einlesen.");
}
// Einlesen fertig
int n = eingabe.charAt(0);
System.out.println(n);
}
}
(Es geht hier hauptsächlich um die Zeile 19)
Mein Problem:
Das Ganze klappt ja ganz ordentlich, bei den einen Zeichen zumindest... Doch bei vielen Zeichen kommt immer derselbe Output, nämlich 65533 (Einer der hintersten möglichen Unicode-Werte).
Fehlerhafte Zeichen sind u.a. ª µ † und viele andere...
Wär echt froh, wenn mir da jemand helfen könnte, eventuell auch mit einer ganz anderen Variante?
Mit freundlichen Grüssen,
Finrod Amandil
EDIT:
Folgende Zeichen funzen nicht (inkl. zu erwartender Unicode-Wert)
ª (170)
¯ (175)
µ (181)
ƒ (131)
… (133)
„ (132)
† (134)
Ô (212)
Õ (213)
und weitere
Zuletzt bearbeitet: