why perl utf 8 also bonus why omnigraffle is not a
play

"why perl utf-8" also (bonus!) "why OmniGraffle - PowerPoint PPT Presentation

"why perl utf-8" also (bonus!) "why OmniGraffle is not a replacement for Powerpoint" perl programmers who everyone understand character sets me. and mark, sometimes. and nick. 10010110 byte character a


  1. "why perl ⤠utf-8" also (bonus!) "why OmniGraffle is not a replacement for Powerpoint"

  2. perl programmers who everyone understand character sets me. and mark, sometimes. and nick.

  3. 10010110 byte

  4. character 贘

  5. a sequence of bytes 10010101 01101100 1101011 00110100

  6. a sequence of characters a sequence of characters

  7. ☃ 10010101 01101100 1101011 001101 ≠

  8. ≠ ☃ ☃ 11100010 10011000 10000011 + "that's utf-8" ⇨

  9. ☃ utf8::upgrade($a) (in place) Perl String Perl String (utf-8 flag on) (utf-8 flag off) utf8::downgrade($a) (in place) Encode::decode("utf8", $a) OR Encode::_utf8_on($a) Encode::decode("latin-1", $a) (in place) Encode::encode("utf8", $a) Encode::encode("latin-1", $a) OR Encode::encode("utf8", $a) Encode::encode("latin-1", $a) Encode::_utf8_off($a) (in place) Encode::decode("latin-1", $a) Encode::decode("utf8", $a) Encode::from_to("utf8", "latin-1", $a) (in place) utf-8 byte latin-1 byte sequence sequence Encode::from_to("latin-1", "utf-8", $a) (in place)

  10. latin-1 byte sequence bytes = code points = characters everything Just Works

  11. Perl String (utf-8 flag off) bytes = code points = characters everything Just Works

  12. latin-1 byte sequence Perl String (utf-8 flag off)

  13. utf-8 byte sequence This is a sequence of bytes

  14. Perl String (utf-8 flag on) This is a sequence of characters

  15. Perl String (utf-8 flag on) Encode::_utf8_on($scalar) Encode::_utf8_off($scalar) utf-8 byte sequence

  16. Perl String (utf-8 flag on) Encode::_utf8_on($scalar) Encode::_utf8_off($scalar) latin 1 byte sequence

  17. Perl String (utf-8 flag on) Encode::_utf8_on($scalar) segfault Encode::_utf8_off($scalar) latin 1 byte sequence

  18. Perl String Perl String (utf-8 flag on) (utf-8 flag off) utf-8 byte latin-1 byte sequence sequence

  19. utf8::upgrade($a) (in place) Perl String Perl String (utf-8 flag on) (utf-8 flag off) utf8::downgrade($a) (in place) Encode::decode("utf8", $a) OR Encode::_utf8_on($a) Encode::decode("latin-1", $a) (in place) Encode::encode("utf8", $a) Encode::encode("latin-1", $a) OR Encode::encode("utf8", $a) Encode::encode("latin-1", $a) Encode::_utf8_off($a) (in place) Encode::decode("latin-1", $a) Encode::decode("utf8", $a) Encode::from_to("utf8", "latin-1", $a) (in place) utf-8 byte latin-1 byte sequence sequence Encode::from_to("latin-1", "utf-8", $a) (in place)

  20. Perl String Perl String (utf-8 flag on) (utf-8 flag off) Encode::encode("latin-1", $a) Encode::encode("utf8", $a) Encode::decode("latin-1", $a) Encode::decode("utf8", $a) Encode::from_to("utf8", "latin-1", $a) (in place) utf-8 byte latin-1 byte sequence sequence Encode::from_to("latin-1", "utf-8", $a) (in place)

  21. Perl String Encode::encode("latin-1", $a) Encode::encode("utf8", $a) Encode::decode("latin-1", $a) Encode::decode("utf8", $a) utf-8 byte latin-1 byte sequence sequence

  22. $bytes = Encode::encode( 'encoding', $chars ) $chars = Encode::decode( 'encoding', $bytes )

  23. use Devel::Peek

  24. not very nice XS

  25. SV = PV(0x8131020) at 0x811d234 REFCNT = 1 FLAGS = (POK,READONLY,pPOK) PV = 0x812a9c8 "\351"\0 CUR = 1 LEN = 2 the bytes the character é

  26. é SV = PV(0x811d470) at 0x8127c38 REFCNT = 1 FLAGS = (POK,pPOK,UTF8) PV = 0x8122ee8 "\303\251"\0 [UTF8 "\x{e9}"] CUR = 2 LEN = 3 the bytes the character é

  27. é DBD::mysql

  28. 2 approaches right Encode::encode Encode::decode fast Encode::_utf8_on

  29. the real correct approach DBD::Pg

  30. XML

  31. XML XML::LibXML nice perl strings

  32. nice perl strings XML::LibXML XML garbage

  33. use java there are very expensive courses you can go to

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend