Unicode-Sequenz (u1234) in Variable speichern und ausgeben

Status
Nicht offen für weitere Antworten.
P

Pida

Gast
Hallo zusammen,

man kann ja Sonderzeichen folgendermaßen ausgeben:
Code:
println "\u1234"; // Ausgabe: irgend ein Unicode-Zeichen

Aber wie mache ich so etwas:
Code:
String uc = "\u1234";
println(uc); // Ausgabe: \u1234, NICHT das Unicode-Zeichen

Ich möchte natürlich auch in der zweiten Variante ein einzelnes Zeichen, nicht den Unicode code point.

Danke
Pida
 
S

SlaterB

Gast
nun mal ganz langsam, einen String in einer Variablen zu speichern ändert doch nichts an der Ausgabe,
denken wir mal in vollständigen Programmen:
Code:
public class Test {

	public static void main(String[] args) throws Exception {
		String uc = "\u1234";
		System.out.println(uc + " - " + uc.length());
	}
}
bei mir ist die Ausgabe: ? - 1

und bei dir?
 

mahe

Aktives Mitglied
Du musst den Wert des Zeichens in einen Hex-String umwandeln (wenn Du das meinst was ich meine ;) ) oder eben den String vorher schon so aufbauen.

Beispiel:
Code:
		String uc1 = "\u1234";
		
		System.out.println(uc1);
		System.out.println("\\u"+Integer.toHexString(uc1.charAt(0)));

		String uc2 = "\\u1234";
		
		System.out.println(uc2);
 
P

Pida

Gast
Danke sehr!

SlaterB, du hast natürlich Recht - ich konnte mir das Problem ja auch nicht erklären.
Inzwischen habe ich festgestellt, dass ein Codebeispiel wie das obige auch bei mir funktioniert - da habe ich nicht gründlich genug getestet.

Eigentlich brauche ich aber sowas:

Code:
String myString = "\\u" + "03d1";  // "\u" mit nur einem Backslash wird als 'invalid Unicode' erkannt
System.out.println (myString); // Ausgabe: \03d1
Hintergrund:
Ich habe Unicode-Sequenzen mit einleitendem \u, entferne dann das \u und verändere den folgenden hexadezimalen Wert durch Addition oder Subtraktion. Soweit klappt das auch.
Dann aber muss das führende \u wieder dran, damit ich das entsprechende Zeichen ausgeben kann. Das habe ich oben - erfolglos - mit der Konkatenation getan.

Offensichtlich wird gespeichert, dass in Zeile 1 der Backslash als Literal und nicht als Steuerzeichen verwendet wird. Daher wird dann \u auch nicht als Einleitung einer Unicode-Sequenz erkannt.

Was kann man da machen?

Gruß
Pida
 
S

SlaterB

Gast
> String myString = "\\u" + "03d1"; // "\u" mit nur einem Backslash wird als 'invalid Unicode' erkannt
> System.out.println (myString); // Ausgabe: \03d1

schon wieder ungenau, die Ausgabe ist \u03d1 (+Stringlänge 6), so ein u kann ja nicht verschluckt werden ;),

ohne Rechnen kommst du hier wohl nicht weiter, 03d1 als HexString parsen, wie gesagt

Code:
public class Test {

	public static void main(String[] args) throws Exception {
		String uc = "\\u" + "03d1";
		System.out.println(uc + " - " + uc.length());
		System.out.println('\u03d1');
		System.out.println((int) '\u03d1');
		System.out.println(Integer.parseInt("03d1", 16));
	}
}
 
P

Pida

Gast
Sorry, mit dem u hast du natürlich Recht.

Mir ist leider nicht klar, inwieweit deine Antwort mir helfen könnte.
\u03d1 ist der griechische Buchstabe Theta, und diesen muss ich ausgeben. Statt diesem Beispiel könnten allerdings auch gut 100 andere Codes dort stehen.
Den Code 03d1 habe ich vorher berechnet, ich kann den Buchstaben also nicht etwa fest als \u03d1 im Quelltext kodieren, wie du es in Zeile 7 getan hast. Statt dessen mein Versuch der Konkatenation mit \u, wie er auch bei dir in Zeile 5 zu finden ist.

Aber wie komme ich von deinem Code, der ja mit der Berechnung eines Integers endet, zum Theta?

Hier übrigens meine Ausgabe:
Code:
\u03d1 - 6
ϑ
977
977

Danke
Pida
 

mahe

Aktives Mitglied
Wenn Du den Code im Dezimalsystem in einem Integer hast, brauchst Du diesen nur zu einem Char casten.

Code:
		int test = (int)'\u002b'; // +

		System.out.println( (char)test );

		test -= 8; // #

		System.out.println( (char)test );

Sind wir jetzt langsam an Deinem Problem angelangt? :wink:

[edit]
Wenn Du den Code tatsächlich als String hast (in einem beliebigen Zahlensystem (fast)) geht das natürlich auch:
Code:
		if (Integer.parseInt("002b", 16) == (int)'\u002b')
			System.out.println("Juhu!");
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
_user_q JavaFX Robot alle Unicode-Zeichen schreiben lassen können Allgemeine Java-Themen 12
J Unicode Darstellung mit 5 chars Allgemeine Java-Themen 9
E Compiler-Fehler Unicode Zeichen einlesen Allgemeine Java-Themen 1
L UTF8 to Unicode Allgemeine Java-Themen 9
mrBrown Unicode-WhiteSpaces aus String entfernen Allgemeine Java-Themen 14
S Input/Output Unicode Umwandlung Allgemeine Java-Themen 2
H Unicode ausgeben ohne Umwandlung - geht das? Allgemeine Java-Themen 3
L Problem bei ausführbarer jar Datei mit Unicode-Zeichen Allgemeine Java-Themen 4
J Unicode als String Allgemeine Java-Themen 6
R kopieren von Dateien und Verzeichnissen - UNICODE? Allgemeine Java-Themen 4
P JavaDoc und Backslashes: "Invalid unicode" Allgemeine Java-Themen 3
H Exponenten mit UNICODE Allgemeine Java-Themen 4
N Encoding Unicode Textfile Allgemeine Java-Themen 5
M Unicode 06 (Arabic) Allgemeine Java-Themen 5
P Unicode-Problem: Griechische Buchstaben Allgemeine Java-Themen 11
J Unicode: cmd parameter (main args); exec params; filenames Allgemeine Java-Themen 2
Daniel_L ASCII in UniCode umwandeln? Allgemeine Java-Themen 14
Luma Unicode Steuerzeichen von druckbaren Zeichen trennen Allgemeine Java-Themen 10
L unicode-zeichen in ein txt-File schreiben Allgemeine Java-Themen 3
L unicode Allgemeine Java-Themen 5
F Unicode zu ASCII konvertieren Allgemeine Java-Themen 5
oliver1974 Wie ResourceBundles mit Unicode Zeichen korrekt einlesen? Allgemeine Java-Themen 4
I Eignung eines Zeichensatzes zur Kodierung eines Unicode-Str. Allgemeine Java-Themen 3
D Zeilenweises auslesen aus einer Unicode CSV-Datei Allgemeine Java-Themen 7
U unicode oder was? Allgemeine Java-Themen 14
R Abwärtskompatibilität des Unicode Allgemeine Java-Themen 2
R Unicode (Kyrillisch) Allgemeine Java-Themen 15
byte Unicode Sonderzeichen Allgemeine Java-Themen 2
B Unicode für Kreuz gesucht Allgemeine Java-Themen 2
H Unicode Darstellung in Java, spezielles Zeichen gesucht Allgemeine Java-Themen 4
S Unicode-Zeichen erstellen/ Kodierung Allgemeine Java-Themen 4
G Unicode file auslesen Allgemeine Java-Themen 11
C Unicode für Promille-Zeichen Allgemeine Java-Themen 5
U Unicode char kyrillisch Allgemeine Java-Themen 10
G Unicode eines Zeichens ermitteln Allgemeine Java-Themen 5
B Algorythmus Lücke in Sequenz schließen Allgemeine Java-Themen 7
J Code-Sequenz nach 10 sec abbrechen? Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben