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:[[email protected]
90:[[email protected]
91:[[email protected]
92:[[email protected]
93:[[email protected]
94:[[email protected]
95:[[email protected]
96:[[email protected]
97:[[email protected]
98:[[email protected]

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[...]aracter.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, botów: 0