Kodowanie polskich znakow

0

Witam

Mam mały dylemat:

Otóż skoro Java domyślne koduje w UTF-16 (a może jednak w UTF-8?) to dlaczego jak próbuje zamienić sobie stringa z polskim znakiem to zamiast dwóch bajtów mam jeden ale za to ze znakiem minus??

Przykład:

 String E = ("Ę");
 byte[] BE = E.getBytes();

        for(int i=0;i<sb.length;i++)
        {
        byte be = BE[i];
        System.out.println(be );
        }

i otzrymuje -54.

Jakieś porady?

0

Java zapisuje i odczytuje Stringi domyślnie w formacie UTF-8. W pamięci przechowuje jako UTF-16 (niektóre znaki np chińskie nie mieszczą się w jednym słowie 16-bitowym i są dwa słowa na znak).

http://en.wikipedia.org/wiki/UTF-8#Modified_UTF-8

W ogóle reprezentacja Stringów jest różna w zależności od kontekstu.

Kod:

        String E = ("Ę");
        byte[] BE = E.getBytes();
        for (int i = 0; i < BE.length; i++) {
            byte be = BE[i];
            System.out.println(be);
        }

Wypluwa u mnie:

-60
-104

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.