Co to jest kodowanie w języku XML? Użyte normalne kodowanie to utf-8. Czym różni się od innych kodowań? Jaki jest cel jego używania?Co to jest kodowanie w języku XML?
Odpowiedz
character encoding określa sposób znaki są odwzorowywane na bajtach. Ponieważ dokumenty XML są przechowywane i przesyłane jako strumienie bajtów, jest to konieczne do reprezentowania znaków Unicode, które składają się na dokument XML.
UTF-8 zostanie wybrany jako domyślny, ponieważ ma kilka zalet:
- jest to zgodne z ASCII, że wszystkie ważne ASCII zakodowanego tekstu jest również ważne kodowanie UTF-8 (ale niekoniecznie na odwrót !)
- używa tylko 1 bajt na znak dla „zwykłych” liter (tych, które występują również w ASCII)
- może reprezentować wszystkich istniejących znaków Unicode
Kodowanie znaków jest bardziej ogólnym tematem niż tylko XML. UTF-8 jest , a nie ograniczone do użycia tylko w XML.
What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text to dobry artykuł, który daje dobry przegląd tematu.
Dokumenty XML mogą zawierać znaki inne niż ASCII, takie jak norweski æ ø å lub francuski ê è é. Aby uniknąć błędów, ustaw kodowanie lub zapisz plik XML jako kod Unicode.
Gdy dane są przechowywane lub przekazywane, są to tylko bajty. Te bajty wymagają pewnej interpretacji. Użytkownicy z nieangielskimi regionami mieli problemy z postaciami, które pojawiły się tylko w swoich ustawieniach narodowych. Znaki te były wyświetlane w niewłaściwy sposób często.
Dzięki XMLowi, który ma informacje, jak interpretować bajty, może być wyświetlany w prawidłowy sposób.
Należy pamiętać, że sam angielski również miał problemy. [ASCII] (http://cstheory.stackexchange.com/questions/2066/difference-between-np-hard-and-np-complete) i [EBCDIC] (http://en.wikipedia.org/wiki/Extended_Binary_Coded_Decimal_Interchange_Code) na przykład użyj zupełnie innych kodowań, nawet dla "normalnych" angielskich znaków. Kodowanie to nie tylko "reszta świata" ;-) –
@ Joachim: Zgadzam się. Hiper-konserwatywne i reakcyjne pojęcie, że ASCII było wystarczająco dobre dla naszych dziadków, więc powinno być wystarczająco dobre dla nas jest śmiesznie krótkowzroczne - i fałszywe. Ale strasznie powszechne. – tchrist
Kiedy komputery były tworzone po raz pierwszy, działały tylko z postaciami znanymi z języka angielskiego, co prowadziło do 7-bitowego standardu US-ASCII.
Jednak istnieje wiele różnych języków pisanych na świecie i trzeba znaleźć sposoby, aby móc je wykorzystać w komputerach.
Pierwszy sposób działa dobrze, jeśli ograniczysz się do określonego języka, użyje kodowania specyficznego dla kultury, takiego jak ISO-8859-1, który jest w stanie reprezentować 8-bitowe znaki języka europejskiego w języku łacińskim, lub GB2312 dla chińskich znaków.
Drugi sposób jest nieco bardziej skomplikowany, ale pozwala teoretycznie przedstawić każdą postać na świecie, to standard Unicode, w którym każda postać z każdego języka ma określony kod. Jednak ze względu na dużą liczbę istniejących znaków (109 000 w kodzie Unicode 5) znaki Unicode są zwykle reprezentowane za pomocą reprezentacji trzech bajtów (jeden bajt dla płaszczyzny Unicode i dwa bajty dla kodu postaci:
Aby zmaksymalizować zgodność z istniejącym kodem (niektóre wciąż używają tekstu w ASCII), kodowanie standardowe UTF-8 zostało opracowane jako sposób przechowywania znaków Unicode, wykorzystując jedynie minimalną ilość miejsca, jak opisano w odpowiedzi Joachima Sauera.
Dlatego często można zobaczyć pliki zakodowane przy użyciu określonych zestawów znaków, takich jak ISO-8859-1, jeśli plik ma być edytowany lub tylko do odczytu przez oprogramowanie (i osoby) rozumiejące tylko te języki, a kodowanie UTF-8, gdy istnieje potrzeba wysokiej interoperacyjności i niezależności kulturowej. Obecna tendencja dotyczy zastępowania innych zestawów znaków przez UTF-8, mimo że wymaga to pracy twórców oprogramowania, ponieważ łańcuchy UTF-8 są bardziej skomplikowane w obsłudze niż łańcuchy znaków o stałej szerokości.
Unicode jest również potrzebny w bardziej wyszukanych rodzajach znaków interpunkcyjnych i symbolach, takich jak '¢ € €' i "kręcone cytaty" i podobne. Nie musi być znacznie trudniej pracować z Unicode, jeśli język programowania zaczyna się od Unicode jako podstawowego zestawu znaków; wtedy nie musisz się martwić o kodowanie o zmiennej szerokości - lub nie powinno. – tchrist
- 1. Co to jest miękkie kodowanie? (Anti-pattern)
- 2. Co to jest ".. ::." w języku C#?
- 3. Co to jest wyrażenie w języku Python?
- 4. Co to jest "String ..." w języku Java?
- 5. Co to jest void * w języku C#?
- 6. Co to jest "_csv" w języku Python?
- 7. W języku PHP, co to jest Tick?
- 8. Co to jest dosłownie w języku Java?
- 9. Co to jest "\ 00" w języku Python?
- 10. Co to jest mnemonik w języku Java?
- 11. Co to jest "1ULL" w języku programowania
- 12. Co to jest "@_silgen_name" w języku Swift?
- 13. Co to jest odpowiednik InnerText w LINQ-to-XML?
- 14. Co to jest właściwość XML xmlns: aplikacja?
- 15. Co to jest dokładnie zbyt długa forma/kodowanie?
- 16. Co to jest Shadowing?
- 17. Co to jest podklasa
- 18. Co to jest global ::?
- 19. Co to jest @. w Perlu?
- 20. Co to jest {} + {} w JavaScript?
- 21. Co to jest odpowiednik JSON.NET w XPath XML, SelectNodes, SelectSingleNode?
- 22. Co to jest tag <view> w układzie xml?
- 23. Co to są sprawdzane wyjątki w języku Java/C#?
- 24. Java - kodowanie obrazu w XML
- 25. Kodowanie w python deklaracji XML
- 26. Co to jest "skrót" i "AIDL" w języku java?
- 27. Co to jest publiczny moduł obiektowy w języku VBA?
- 28. Co to jest wywoływanie metod wirtualnych w języku Java?
- 29. Co to jest & H14 i w języku VBScript?
- 30. Co to jest wyrażenie literałowe w języku boolowskim?
Zobacz W3C [zalecenie dotyczące kodowania] (http://www.w3.org/TR/xml/#charencoding). – Nishant
@Nishant: to nie jest dobre wprowadzenie do tematu kodowania znaków w ogóle. I myślę, że o to właśnie chodzi w tym pytaniu. –
Właśnie dodałem specyfikacje XML jako wskazane przez OP, "normalnym używanym kodowaniem jest UTF-8". To nie ma być odpowiedź. – Nishant