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