Wyświetlanie znaków UNICODE w javie.

0

Jak wyświetlić sekwencje Unicode,
na przykład kod:

charUnicode = '\u0041';
System.out.println(charUnicode);

wyświetla literę A

jak zrobić żeby w pętli wypisać A, B C, D itd
czyli wyświetlamy sekwencje:
'\u0041'
'\u0042'
'\u0043'
'\u0044'

stworzyłem coś takiego:

 public static void main (String[] args)
    {
        String strUnicode;
        char [] charUnicode;
        for (int i=0; i<9; i++)
        {
             strUnicode="\'\\u000" +i +"\'";
             charUnicode = strUnicode.toCharArray();
             System.out.println(charUnicode);

        }
    }
    

ale wynik jest niestety następujący:

run:
'\u0000'
'\u0001'
'\u0002'
'\u0003'
'\u0004'
'\u0005'
'\u0006'
'\u0007'
'\u0008'
BUILD SUCCESSFUL (total time: 1 second)

0
for (int i = 0; i < 9; i++) {
    System.out.println(Character.toChars(i));
}
0

dzięki, nie sądziłem że to takie proste
Pozdro

0

Jeszcze 1 rzecz:

public static void main(String[] args) {

		for (int i = 89; i < 99; i++) {
			charUnicode=Character.toChars(i);
		    System.out.println(i + ":" + Character.toChars(i));
		}
	}

daje wynik:

89:[C@1cde100
90:[C@16f0472
91:[C@18d107f
92:[C@360be0
93:[C@45a877
94:[C@1372a1a
95:[C@ad3ba4
96:[C@126b249
97:[C@182f0db
98:[C@192d342

a nie jak sądziłem:

89: Y
90: Z
91: [
92:
93: ]
94: ^
95: _
96: `
97: a
98: b

dlaczego tak się dzieje ?

0

Wystarczy przeczytać dokumentację - http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#toChars%28int%29
Ta metoda zwraca tablicę.
Zmień "Character.toChars(i)" na "Character.toChars(i)[0]".
Tablica będzie mieć dwa elementy od U+FFFF.

0

Twoje rozwiązanie będzie ucinać połowy tych znaków (podobny efekt daje zwykłe (char) i).

Jeśli nie potrzebujesz znaków powyżej u+ffff (a zakres 89-99 jest mniejszy niż ten codepoint), wystarczy ci:

for (int i = 89; i < 99; i++) {
    System.out.println(i + ":" + ((char) i));
}

Jeśli chcesz mieć Unicode (tak jak w pytaniu), to:

for (int i = 89; i < 99; i++) {
    System.out.println(i + ":" + new String(Character.toChars(i)));
}

Różnica bierze się stąd, że PrintStream.println jest przeciążone dla tablicy znaków i poprawnie ją wypisuje, czego nie daje konkatenacja stringów.

0

dziękuję Wam bardzo
oba rozwiązania dały identyczny wynik w zakresie 0...283:
kawałek wyniku wkleiłem poniżej:

iooi #1: 165:?
iooi #2: 165:?
__krzysiek85: 165:?
iooi #1: 166:¦
iooi #2: 166:¦
__krzysiek85: 166:¦
iooi #1: 167:§
iooi #2: 167:§
__krzysiek85: 167:§
iooi #1: 168:¨
iooi #2: 168:¨
__krzysiek85: 168:¨
iooi #1: 169:©
iooi #2: 169:©
__krzysiek85: 169:©
iooi #1: 170:?
iooi #2: 170:?
__krzysiek85: 170:?
iooi #1: 171:«
iooi #2: 171:«
__krzysiek85: 171:«

1 użytkowników online, w tym zalogowanych: 0, gości: 1