Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Schei�     encodingCodierungen und ähnliches
Schei�                     encoding                Codierungen und ähnlichesAndreas Heigl@heiglandreas
HistorischesAnfängeASCIIISOUnicode
AnfängeLochkartenKein Bedarf für „Schrift“
ASCIIAmerican Standard Code for InformationInterchange1963 entstanden7-Bit Zeichensatz (128 Zeichen)
ASCII 0 1 2 3 4 5 6 7 8 9 A B C D E F01234   A B C D E F G H I J K L M N O5 P Q R S T U VWX Y Z67
ASCII 0 1 2 3 4 5 6 7 8 9 A B C D E F01234   A B   C   D   E   F   G   H   I   J K L M N O5 P Q R   S   T   U   V   W   X ...
ASCII 0 1 2 3 4 5 6 7 8 9 A B C D E F0123 0 1 2 3 4   5   6   7   8   94   A B C D   E   F   G   H   I   J K L M N O5 P Q ...
ASCII    0 1 2 3 4 5 6 7 8 9 A B C D E F012       !   ”   #   $   %   &   ’   (   )   *   +   ,   -    .   /3   0   1   2 ...
ASCII    0 1 2 3 4 5 6 7 8 9 A B C D E F012       !   ”   #   $   %   &   ’   (   )   *   +   ,   -    .   /3   0   1   2 ...
ISOInternational Standardisation OrganisationASCII-Kompatibel8-Bit Zeichensatz (256 Zeichen)
-1 Latin-1, Westeuropa     -9 Latin-5, Türkisch-2 Latin-2, Mitteleuropa   -10 Latin-6, Nordisch-3 Latin-3, Südeuropa      ...
ISO-8859-1 Latin-1, Westeuropa       -9 Latin-5, Türkisch-2 Latin-2, Mitteleuropa     -10 Latin-6, Nordisch-3 Latin-3, Süd...
ASCII    0 1 2 3 4 5 6 7 8 9 A B C D E F012       !   ”   #   $   %   &   ’   (   )   *   +   ,   -    .   /3   0   1   2 ...
ISO-8859-1    0 1 2 3 4 5 6 7 8 9 A B C D E F89A   nbsp           ¡   ¢   £   ¤   ¥   ¦   §   ¨   ©   ª   «   ¬   shy     ...
Andere CodierungenMacRomanWindowsLatin...
Unicode1991 (1988) entstandenMultibyte Zeichensatz (z.Zt. 1.114.112Zeichen)ASCII/ISO-8859-1 KompatibelUnterschiedliche Cod...
UnicodeU+0000 - U+10FFFFU+0000 - U+007F -> ASCIIU+0080 - U+00FF -> ISO-8859-1Verschiedene Codierungen möglich
UTF-32jedes Zeichen 4 Byte langEinfachSpeicherintensiv
UTF-16jedes Zeichen 2 Byte langEinfachCodiert nur die meistgenutzten Zeichen ausUnicodeNur Zeichen von U+0000 bis U+FFFF m...
UTF-8jedes Zeichen zwischen 1 und 4 Byte langStreamsicher, da Start- und Folgezeichenunterschieden werdenAlle Unicode-Zeic...
UTF-8Startbyte 0xxxxxxx oder 11xxxxxxFolgebyte 10xxxxxx0xxxxxxx für 1-Byte-Zeichen1xxxxxxx für Mehr-Byte-Zeichen.Die Anzah...
UTF-800-7F ein Byte langes Zeichen (ASCII)80-BF 2., 3. oder 4. Byte einer mehrbyte-SequenzC2-DF Start einer 2 Byte langen ...
UTF-8     UTF-8       Binär   Unicode    Fehler                         U+0079y     0x79      01111001                    ...
Codierung und PHPPHP ist NICHT Unicode-sicherWarum ist das ein Problem?
Warum ist das ein     Problem?Kein Problem wenn NUR EINE ISO-8859-Variantezum Einsatz kommt.Internationale SeitenMehrsprac...
Codierung und PHPmb_internal_encoding(UTF-8); mb_http_input (UTF-8); mb_http_output (UTF-8);Content-type: text/html; chars...
mb_string    MultiByte-Funktionen    Ersetzen „normale“ String-Funktionen    Ermöglichen den Umgang mit UTF-8Überladen von...
iconv    Konvertierung aus beliebigem Zeichensatz    nach z.B. UTF-8<?php$sourceEnc = mb_detect_encoding($string);$targetE...
MySQLServer        [mysqld]              default-collation=utf8_binClient        character-set-server=utf8              co...
Client   MySQL(UTF-8)   Ü C3 9C           Verbindung          (ISO-8859-1)              Ãœ             C3 9C        Server...
Resourcenhttp://php.net/manual/de/mbstring.overload.phphttp://www.ibm.com/developerworks/library/os-php-unicode/index.html...
Fragen?
Nächste SlideShare
Wird geladen in …5
×

Schei. encoding

2.574 Aufrufe

Veröffentlicht am

  • Check out my comment on utf8_encode on php.net. It’s a function which encodes to UTF8 no matter how the input was formated:

    http://www.php.net/manual/en/function.utf8-encode.php#102382
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Gehören Sie zu den Ersten, denen das gefällt!

Schei. encoding

  1. 1. Schei� encodingCodierungen und ähnliches
  2. 2. Schei� encoding Codierungen und ähnlichesAndreas Heigl@heiglandreas
  3. 3. HistorischesAnfängeASCIIISOUnicode
  4. 4. AnfängeLochkartenKein Bedarf für „Schrift“
  5. 5. ASCIIAmerican Standard Code for InformationInterchange1963 entstanden7-Bit Zeichensatz (128 Zeichen)
  6. 6. ASCII 0 1 2 3 4 5 6 7 8 9 A B C D E F01234 A B C D E F G H I J K L M N O5 P Q R S T U VWX Y Z67
  7. 7. ASCII 0 1 2 3 4 5 6 7 8 9 A B C D E F01234 A B C D E F G H I J K L M N O5 P Q R S T U V W X Y Z6 a b c d e f g h i j k l m n o7 p q r s t u v w x y z
  8. 8. ASCII 0 1 2 3 4 5 6 7 8 9 A B C D E F0123 0 1 2 3 4 5 6 7 8 94 A B C D E F G H I J K L M N O5 P Q R S T U V W X Y Z6 a b c d e f g h i j k l m n o7 p q r s t u v w x y z
  9. 9. ASCII 0 1 2 3 4 5 6 7 8 9 A B C D E F012 ! ” # $ % & ’ ( ) * + , - . /3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?4 A B C D E F G H I J K L M N O5 P Q R S T U V W X Y Z [ ] ^ _6 ` a b c d e f g h i j k l m n o7 p q r s t u v w x y z { | } ~ .
  10. 10. ASCII 0 1 2 3 4 5 6 7 8 9 A B C D E F012 ! ” # $ % & ’ ( ) * + , - . /3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?4 @ A B C D E F G H I J K L M N O5 P Q R S T U V W X Y Z [ ] ^ _6 ` a b c d e f g h i j k l m n o7 p q r s t u v w x y z { | } ~ .
  11. 11. ISOInternational Standardisation OrganisationASCII-Kompatibel8-Bit Zeichensatz (256 Zeichen)
  12. 12. -1 Latin-1, Westeuropa -9 Latin-5, Türkisch-2 Latin-2, Mitteleuropa -10 Latin-6, Nordisch-3 Latin-3, Südeuropa -11 Thai-4 Latin-4, Nordeuropa -12 - nicht existent-5 Kyrillisch -13 Latin-7, Baltisch-6 Arabisch -14 Latin-8, Keltisch-7 Griechisch -15 Latin-9, Westeuropäisch-8 Hebräisch -16 Latin-10, Südosteuropäisch
  13. 13. ISO-8859-1 Latin-1, Westeuropa -9 Latin-5, Türkisch-2 Latin-2, Mitteleuropa -10 Latin-6, Nordisch-3 Latin-3, Südeuropa -11 Thai-4 Latin-4, Nordeuropa -12 - nicht existent-5 Kyrillisch -13 Latin-7, Baltisch-6 Arabisch -14 Latin-8, Keltisch-7 Griechisch -15 Latin-9, Westeuropäisch-8 Hebräisch -16 Latin-10, Südosteuropäisch
  14. 14. ASCII 0 1 2 3 4 5 6 7 8 9 A B C D E F012 ! ” # $ % & ’ ( ) * + , - . /3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?4 @ A B C D E F G H I J K L M N O5 P Q R S T U V W X Y Z [ ] ^ _6 ` a b c d e f g h i j k l m n o7 p q r s t u v w x y z { | } ~ .
  15. 15. ISO-8859-1 0 1 2 3 4 5 6 7 8 9 A B C D E F89A nbsp ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ shy ® ¯B ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿C À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î ÏD Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ßE à á â ã ä å æ ç è é ê ë ì í î ïF ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
  16. 16. Andere CodierungenMacRomanWindowsLatin...
  17. 17. Unicode1991 (1988) entstandenMultibyte Zeichensatz (z.Zt. 1.114.112Zeichen)ASCII/ISO-8859-1 KompatibelUnterschiedliche Codierungen (UTF-8,UTF-16, UTF-32, EBCDIC, .... )
  18. 18. UnicodeU+0000 - U+10FFFFU+0000 - U+007F -> ASCIIU+0080 - U+00FF -> ISO-8859-1Verschiedene Codierungen möglich
  19. 19. UTF-32jedes Zeichen 4 Byte langEinfachSpeicherintensiv
  20. 20. UTF-16jedes Zeichen 2 Byte langEinfachCodiert nur die meistgenutzten Zeichen ausUnicodeNur Zeichen von U+0000 bis U+FFFF möglich.Big- oder LittleEndian?MacOS-X, Windows, Java, .Net
  21. 21. UTF-8jedes Zeichen zwischen 1 und 4 Byte langStreamsicher, da Start- und Folgezeichenunterschieden werdenAlle Unicode-Zeichen codierbar und noch viel mehr(bis zu 2^42 - 4.398.046.511.104)Platzsparend, da oft nur 1 Byte gespeichertwerden muss (Lateinische Schriften)Linux, IETF
  22. 22. UTF-8Startbyte 0xxxxxxx oder 11xxxxxxFolgebyte 10xxxxxx0xxxxxxx für 1-Byte-Zeichen1xxxxxxx für Mehr-Byte-Zeichen.Die Anzahl der 1 zeigt die Anzahl derGesamt-Byte an
  23. 23. UTF-800-7F ein Byte langes Zeichen (ASCII)80-BF 2., 3. oder 4. Byte einer mehrbyte-SequenzC2-DF Start einer 2 Byte langen SequenzE0-EF Start einer 3 Byte langen SequenzF0-F4 Start einer 4 Byte langen Sequenz
  24. 24. UTF-8 UTF-8 Binär Unicode Fehler U+0079y 0x79 01111001 01111001 0xC3 0xA4 11000011 U+00E4ä ä 10100100 11100100
  25. 25. Codierung und PHPPHP ist NICHT Unicode-sicherWarum ist das ein Problem?
  26. 26. Warum ist das ein Problem?Kein Problem wenn NUR EINE ISO-8859-Variantezum Einsatz kommt.Internationale SeitenMehrsprachige Texte (da langt schon eingriechisches Wort ...)Mehrbyte-Zeichen und strlen?Darstellung von einzelnen Zeichen eines MehrByte-Zeichens (z.B. ä statt ä)
  27. 27. Codierung und PHPmb_internal_encoding(UTF-8); mb_http_input (UTF-8); mb_http_output (UTF-8);Content-type: text/html; charset=utf-8<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> und <form accept-charset = "utf-8">CREATE DATABASE ... DEFAULT CHARACTER SET utf8 COLLATE utf8 ... ENGINE ...CHARSET=utf8 COLLATE=utf8_unicode_ciSET NAMES utf8 COLLATE utf8_unicode_cidefault_charset = UTF-8mb_string Funktionenmb-Reguläre Ausdrückeu-Modifikator für preg-RegEx
  28. 28. mb_string MultiByte-Funktionen Ersetzen „normale“ String-Funktionen Ermöglichen den Umgang mit UTF-8Überladen von Standard-Funktionen für Mail (1),String (2) und RegEx-Funktionen (4) mittlesmbstring.overload = n
  29. 29. iconv Konvertierung aus beliebigem Zeichensatz nach z.B. UTF-8<?php$sourceEnc = mb_detect_encoding($string);$targetEnc = ‘UTF8//TRANSLIT/ /IGNORE‘;echo iconv($sourceEnc,$targetEnc,$string);
  30. 30. MySQLServer [mysqld] default-collation=utf8_binClient character-set-server=utf8 collation-server=utf8_binVerbindung default-character-set=utf8Datenbank [client]Tabelle default-character-set=utf8
  31. 31. Client MySQL(UTF-8) Ü C3 9C Verbindung (ISO-8859-1) Ãœ C3 9C Server (UTF-8) Ãœ C3 83 C2 9C
  32. 32. Resourcenhttp://php.net/manual/de/mbstring.overload.phphttp://www.ibm.com/developerworks/library/os-php-unicode/index.htmlhttp://unicode.orgGoogle, Bing, Yahoo, .....
  33. 33. Fragen?

×