Norma ISO/IEC 10646 opisuje uniwersalny zestaw znaków (UCSUniversal 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]

Relacje do Unicode edytuj

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.

Konwersja pomiędzy kodowaniem ISO 10646 a innymi edytuj

Format określony w ISO 10646 jest już używany w technologii XML. W związku z problemami podczas obsługi kodowania ISO-8859-2 sugerowane jest przekodowanie znaków spoza ASCII na odpowiednie leksemy.

Przykładowy plik XML może mieć postać:

 <test opis="Zażółć gęślą jaźń">

Po konwersji wygląda tak:

 <test opis="Za&#380;&#243;&#322;&#263; g&#281;&#347;l&#261; ja&#378;&#324;">

Do wykonania konwersji może być przydatny program AWK

 {
 gsub(/Ą/, "\\&#260;");
 gsub(/Ć/, "\\&#262;");
 gsub(/Ę/, "\\&#280;");
 gsub(/Ł/, "\\&#321;");
 gsub(/Ń/, "\\&#323;");
 gsub(/Ó/, "\\&#211;");
 gsub(/Ś/, "\\&#346;");
 gsub(/Ź/, "\\&#377;");
 gsub(/Ż/, "\\&#379;");
 gsub(/ą/, "\\&#261;");
 gsub(/ć/, "\\&#263;");
 gsub(/ę/, "\\&#281;");
 gsub(/ł/, "\\&#322;");
 gsub(/ń/, "\\&#324;");
 gsub(/ó/, "\\&#243;");
 gsub(/ś/, "\\&#347;");
 gsub(/ź/, "\\&#378;");
 gsub(/ż/, "\\&#380;");
 print
 }

Zobacz też edytuj

Przypisy edytuj

  1. WG2 - Projects
  2. FAQ - Unicode and ISO 10646 [online], unicode.org [dostęp 2017-11-23] (ang.).

Linki zewnętrzne edytuj