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]
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
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żółć 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
}
Zobacz też
Przypisy
Linki zewnętrzne