%Teilweise Erzeugt mit dem LaTeX-Generator: http://latex.sehnot.de

%Schriftgröße, Layout, Papierformat, Art des Dokumentes
\documentclass[10pt,oneside,a4paper]{scrartcl}

%Einstellungen der Seitenränder
\usepackage[left=2cm,right=2cm,top=1.5cm,bottom=1.5cm,includeheadfoot]{geometry}

%neue Rechtschreibung
\usepackage[ngerman]{babel}

%Umlaute ermöglichen
\usepackage[utf8]{inputenc}

%Gesamtseitenzahl
\usepackage{lastpage}

% Kopf- und Fußzeile
\usepackage[automark]{scrpage2}

%Quellcode-Listings
\usepackage{listings}

%Hyperlinks
\usepackage{hyperref}

%Kopfzeile
\ihead{Codierung}
\chead{}
\ohead{http://kohnlehome.de/informatik/zeichencodierung.pdf} 
\setheadsepline{0.5pt}

%Fußzeile
\setfootsepline{0.5pt}
\ifoot{Franz Kohnle}
\cfoot{Seite \thepage\ von  \pageref{LastPage}}
\ofoot{\today}

\pagestyle{scrheadings}

\begin{document}

% Überschrift 
\begin{center}
\LARGE % Schriftgröße
\bfseries % Fettdruck
\sffamily % Serifenlose Schrift
Zeichencodierung
\end{center}




\section{ASCII (American Standard Code for Information Interchange)}
7 Bit pro Zeichen

\begin{itemize}
\item 0 - 31: Steuerzeichen
\item 32 - 126: Druckbare Zeichen 
\begin{verbatim}
!"#$%&'()*+,-./0123456789:;<=>?@
ABCDEFGHIJKLMNOPQRSTUVWXYZ
[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
\end{verbatim}
\item 127: Steuerzeichen
\end{itemize}

\section{ISO 8859}
8 Bit pro Zeichen

\begin{itemize}
\item 0 - 127: Wie ASCII
\item 128 - 255: Je nach Teilnorm
\end{itemize}

\subsection*{ISO 8859-1 (Latin-1, Westeuropäisch)}
z.B. 164: Allgemeines Währungssymbol
\subsection*{ISO 8859-15 (Latin-9, Westeuropäisch)}
z.B. 164: Eurosymbol


\section{Unicode}
\subsection*{Codepunkte und Zeichen}
\begin{itemize}
\item Jedes Zeichen erhält einen Codepunkt: U+0000, …, U+10FFFF
\item 17 planes (Ebenen) mit je 216 = 65.536 Zeichen.
    \begin{itemize}
	\item plane 0: BMP (Basic Multilingual Plane) U+0000 - U+FFFF\\(U+D800 … U+DFFF reserviert für Surrogate für Darstellung von höheren Planes in UTF-16)
	\item plane 1: U+10000 - U+1FFFF
	\item ...
	\item plane 16: U+100000 - U+ 10FFFF
	\end{itemize}
\item Version 10.0 vom Juni 2017: 136690 Zeichen
\end{itemize}

\subsection*{Codierung}
UTF: Unicode Transformation Format

\subsubsection*{UTF-32}
\begin{itemize}
\item Verwendung: ???
\item Jedes Unicode-Zeichen wird durch 32 Bit dargestellt.
\end{itemize}

\subsubsection*{UTF-16}
\begin{itemize}
\item Verwendung: Windows, OS X, Java, .NET
\item Jedes Unicode-Zeichen wird durch 16  oder 32 Bit dargestellt.
	\begin{itemize}
	\item Zeichen der BMP: 16 Bit wie Unicode
	\item Zeichen außerhalb der BMP: 32 Bit: 
		\begin{enumerate}
		\item von Unicode-Nummer 0x10000 subtrahieren
		\item Ergebnis aufteilen in zwei Blöcke mit je 10 Bit
		\item \begin{enumerate}
				\item High-Surrogate: vor ersten Block: 110110 $\Rightarrow$ 0xD800 - 0xDBFF
				\item Low-Surrogate: vor zweiten Block: 110111 $\Rightarrow$ 0xDC00 - 0xDFFF
				\end{enumerate}
		\item High-Surrogat und Low-Surrogat zusammenbauen $\Rightarrow$ 32 Bit
		\end{enumerate}
	\end{itemize}
\end{itemize}

Beispiele: \href{https://de.wikipedia.org/wiki/UTF-16#Beispiele}{https://de.wikipedia.org/wiki/UTF-16\#Beispiele}

\subsubsection*{UTF-8}
\begin{itemize}
\item Verwendung: Linux, E-Mail, WWW
\item Jedes Unicode-Zeichen wird durch 8, 16, 24 oder 32 Bit dargestellt.	
\end{itemize}

\renewcommand{\arraystretch}{1.2}
\begin{tabular}{c|l|l}
Unicode (hex) & UTF-8 (binär) & Zeichen  \\ \hline \hline
00 - 7F & 0xxxxxxx  &  Wie ASCII \\ \hline
80 - 7FF & 110xxxxx 10xxxxxx &  2 Byte pro Zeichen \\ \hline
800 - FFFF & 1110xxxx 10xxxxxx 10xxxxxx &  3 Byte pro Zeichen \\ \hline
1000 - 10 FFFF & 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx &  4 Byte pro Zeichen \\ \hline
\end{tabular}


\section{Sonstiges}
\subsection*{BOM (Byte Order Mark)}
Bytefolge 0xEF, 0xBB, 0xBF am Dateianfang. Wird nicht von allen Programmen richtig interpretiert.

\subsection*{Kennzeichnung in HTML5}
\begin{verbatim}
<meta charset="utf-8">
\end{verbatim}



\subsection*{Zeilenumbrüche}
\renewcommand{\arraystretch}{1.2}
\begin{tabular}{l|l|c|c}
Betriebssystem & Abkürzung & Escape-Squenz  & Dezimal \\ \hline \hline
Windows  &  CR LF & \textbackslash r \textbackslash n &  13 10 \\ \hline
Linux, Mac OS X  &  LF & \textbackslash n &  10 \\ \hline
Mac OS 9  &  CR LF & \textbackslash r  &  13 \\ \hline

\end{tabular}



\end{document}
