ISO 10646
Z Wikipedii
Norma ISO/IEC 10646 opisuje uniwersalny zestaw znaków (UCS – Universal Character Set) służący do opisu znaków (liter, cyfr, symboli, ideogramów itd.) z wielu języków, pism i tradycji na świecie. Zestaw zawiera około 100.000 abstrakcyjnych znaków, z których każdy posiada unikalną nazwę i kod znaku.
Teoretycznie standard pozwala na zapisanie ponad 2 miliardów znaków (w 31 bitach, zobacz UCS-4), jednak w powszechnym użyciu jest jedynie pierwsze 65,536 znaków (UCS-2) ze zbioru Podstawowej Płaszczyzny Wielojęzycznej (BMP - Basic Multilingual Plane).
UCS jest ciągle rozwijany, aktualnie trwają prace nad poprawką numer 3 i 4 do standardu ISO/IEC 10646:2003 Amendment 1 and Amendment 2.[1]
Spis treści |
[edytuj] Relacje do Unicode
W 1991 ISO Working Group podjęło współpracę z Unicode Consortium w celu stworzenia jednego standardu dla zapisu wielojęzykowego tekstu. Unicode 1.1 opublikowany w 1993 roku był już zgodny z normą ISO/IEC 10646-1:1993. Odtąd Unikod stał się oficjalną implementacją ww. normy.[2]
- ISO/IEC 10646-1:1993 ≈ Unicode 1.1
- ISO/IEC 10646-1:2000 ≈ Unicode 3.0
- ISO/IEC 10646-2:2001 ≈ Unicode 3.2
- ISO/IEC 10646:2003 ≈ Unicode 4.0
- ISO/IEC 10646:2003 plus Amendment 1 ≈ Unicode 4.1
- ISO/IEC 10646:2003 plus Amendment 1, Amendment 2, oraz część Amendment 3 ≈ Unicode 5.0
Zobacz §D.1 of The Unicode Standard dla szczegółowych informacji.
[edytuj] Konwersja pomiędzy kodowaniem ISO 10646 a innymi
Format określony w ISO 10646 jest już używany w technologi XML. W związku z problemami podczas obsługi kodowania ISO-8895-2 sugerowane jest przekodowanie znaków spoza ASCII na odpowiednie leksemy.
Przykładowny plik XML może mieć postać:
<test opis="Zażółć gęślą jaźń">
Po konwersji wygląda tak:
<test opis="Zażółć gęślą jaźń">
Do wykonania konwersji może być przydatny program AWK
{ gsub(/Ą/, "\\Ą"); gsub(/Ć/, "\\Ć"); gsub(/Ę/, "\\Ę"); gsub(/Ł/, "\\Ł"); gsub(/Ń/, "\\Ń"); gsub(/Ó/, "\\Ó"); gsub(/Ś/, "\\Ś"); gsub(/Ź/, "\\Ź"); gsub(/Ż/, "\\Ż"); gsub(/ą/, "\\ą"); gsub(/ć/, "\\ć"); gsub(/ę/, "\\ę"); gsub(/ł/, "\\ł"); gsub(/ń/, "\\ń"); gsub(/ó/, "\\ó"); gsub(/ś/, "\\ś"); gsub(/ź/, "\\ź"); gsub(/ż/, "\\ż"); print }