POJAVA
Kodowanie, budowa projektu
Na następne zajęcia
- Kolejna iteracja projektu
- Znów dwa pytania.
Format przesyłanych projektów
- Dostaje spakowany projekt eclipse
- Ewentualne zależności (pliki jar) są w katalogu lib w projekcie
Pojęcie kodowania
- Na dysku (i w pamięci) wszystkie
dane są strumieniem bajtów
- Czym jest zatem wasz plik źródłowy?
- Strumieniem bajtów
- Kodowanie jest metodą zamiany
strumienia bajtów na strumień
znaków
Tablica ASCII

Tablica ASCII
- Pierwotnie tablica ASCII kodowała 128 znaków, każdy za pomocą 7bitów.
- Potem zaczęła obsługiwać 256 znaków (ciągle żadnych ze wschodniej europy ;))
Code pages
- Ascii nie umożliwiała zapisu polskich ogonków.
- Ponieważ ludzie generalnie chcieli zapisywać swoje "narodowe znaki" w DOS wprowadzono coś co się nazywało codepages.
- Było to wiele kodowań, które zgodnie pozwalały kodować niższe 128 znaków ASCII, ale w pozostałych "upychały" znaki narodowe
- Kodowanie które pozwalało używać polskich znaków w Windowsie to cp-1250.
-
Co ważne Java do dziś uznaje CP-1250 za domyślne
w systemie Windows.
Unicode
- Ponieważ ludzie nie lubią myśleć o takich bzdurach jak kodowanie, wymyślono coś co się nazywa Unicode
- Jest to rodzina kodowań z których każde pozwala na zakodowanie każdego znaku.
- Szczególnie (w Europie) popularne jest kodowanie UTF-8.
- Kodowanie to jest zgodne z ASCII (amerykański tekst w ASCII jest zgodny z UTF8)
- Natomiast pozostałe znaki są kodowane za pomocą sekwencji wielobajtowych.
-
Wszystkie ciągi znaków w JVM kodowane są UTF (dokładniej UTF-16).
Kodowanie a Wasze projekty
- Przesyłanie plików może generować problemy z kodowaniem.
- Odpowiednio wygenerowane projekty Eclipse (albo każdego innego IDE --- wiecie że są inne IDE?) będą działać.
Zmiana kodowania
- Project -> Properties
- Odznaczamy "System default" czy "Inherited"
- Wybieramy UTF-8.
Kodowanie a kompilacja projektu
- Wasze narzędzia kompilacji (o nich na następnych zajęciach) muszą wiedzieć w jakim kodowaniu kodowane
są pliki źródłowe
- Dla kompilatora java wykorzystywany jest switch -encoding
Unicode escape sequences
- Jeśli chcecie wprowadzić do Waszego kody literkę pi
(wiadomo że jest to możliwe bo ciągi znaków w Javie obsługują tą literkę...)
- Możecie albo wstawić po prostu znak π
- Albo wstawić groźnie wyglądające
\u03C0 - \u oznacza że dalej będzie numer znaku UNICODE
- Ten numerek znajdujemy za pomocą zapytania "<nazwa znaku> unicode".
Klasy i paczki z ogonkami
- Specyfikacja Java pozwala na w zasadzie dowolne
znaki w nazwach klas.
- Tak samo jak ciągi znaków w programie, nazwy
plików i katalogów są przechowywane w kodowaniu. - Jeśli dacie polskie literki w nazwach klas i paczek
istnieje ryzyko, że program nie zadziała bo np.
kodowanie systemu plików się zmienia między
komputerami. - Dodatkowo kod i tak powinien być po angielsku,
więc po co komplikować?
pojava-kodowanie-budowanie-projektu
By Jacek Bzdak
pojava-kodowanie-budowanie-projektu
- 6,670