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ć?