Encode

Encode

[1] Encode は、文字コード符号化復号を行う Perlモジュール (中核モジュール) です。

目次

  1. 本体モジュール
  2. 追加モジュール
  3. 採録基準
  4. Web での利用
  5. メモ

本体モジュール#

追加モジュール#

[8] Encode::HanExtra - Extra sets of Chinese encodings - metacpan.org, https://metacpan.org/pod/Encode::HanExtra

[5] Encode::IBM - IBM-specific encoding mappings - metacpan.org, https://metacpan.org/pod/Encode::IBM

[7] Encode::X11 - character encodings for X11 - metacpan.org, https://metacpan.org/pod/Encode::X11

[11] Encode::BOCU1 - encodes / decodes BOCU-1 string, works as part of Encode.pm - metacpan.org, https://metacpan.org/pod/Encode::BOCU1

[14] Encode::HP - Extra sets of HP encodings - metacpan.org, https://metacpan.org/pod/Encode::HP

[15] Encode::VN - Extra sets of Vietnamese encodings - metacpan.org, https://metacpan.org/pod/Encode::VN

[16] Encode::JIS2K - JIS X 0212 (aka JIS 2000) Encodings - metacpan.org, https://metacpan.org/pod/Encode::JIS2K

[26] Encode::JISX0213 - JIS X 0213 encodings - metacpan.org, https://metacpan.org/pod/Encode::JISX0213

[34] Encode::EUCJPASCII - eucJP-ascii - An eucJP-open mapping - metacpan.org, https://metacpan.org/pod/Encode::EUCJPASCII

[20] Encode::EUCJPMS - Microsoft Compatible Encodings for Japanese - metacpan.org, https://metacpan.org/pod/Encode::EUCJPMS

[21] Encode::ISO2022 - ISO/IEC 2022 character encoding scheme - metacpan.org, https://metacpan.org/pod/Encode::ISO2022

[17] Encode::RAD50 - Convert to and from the Rad50 character set. - metacpan.org, https://metacpan.org/pod/Encode::RAD50

[23] Encode-BetaCode/lib/Encode/BetaCode.pm at master · dgkontopoulos/Encode-BetaCode · GitHub, https://github.com/dgkontopoulos/Encode-BetaCode/blob/master/lib/Encode/BetaCode.pm

[24] Encode-DIN66003/ucm/din66003.ucm at master · Corion/Encode-DIN66003 · GitHub, https://github.com/Corion/Encode-DIN66003/blob/master/ucm/din66003.ucm

[25] GitHub - rjbs/Encode-IMAPUTF7, https://github.com/rjbs/Encode-IMAPUTF7

[32] Encode::Bootstring - Encode and decode utf8 into a set of basic code points - metacpan.org, https://metacpan.org/pod/Encode::Bootstring

[27] Encode::Punycode - Encode plugin for Punycode (RFC 3492) - metacpan.org, https://metacpan.org/pod/Encode::Punycode

[30] Encode::DosHebrew - DOS Hebrew Encoding - metacpan.org, https://metacpan.org/pod/Encode::DosHebrew

[35] Encode::DoubleEncodedUTF8 - Fix double encoded UTF-8 bytes to the correct one - metacpan.org, https://metacpan.org/pod/Encode::DoubleEncodedUTF8

[36] Encode::JP::Emoji - Emoji encodings and cross-mapping tables in pure Perl - metacpan.org, https://metacpan.org/pod/Encode::JP::Emoji

[37] Encode::JP::Mobile - 日本の携帯電話向け Shift_JIS (CP932) / UTF-8 エンコーディング - metacpan.org, https://metacpan.org/pod/Encode::JP::Mobile

[42] Encode::JP::Mobile::UnicodeEmoji - Unicode Emoji mapping for Encode::JP::Mobile - metacpan.org, https://metacpan.org/pod/Encode::JP::Mobile::UnicodeEmoji


[6] TeX::Encode - Encode/decode Perl utf-8 strings into TeX - metacpan.org, https://metacpan.org/pod/TeX::Encode

[12] Encode::CNMap - enhanced Chinese encodings with Simplified-Traditional auto-mapping - metacpan.org, https://metacpan.org/pod/Encode::CNMap

[13] Encode::HanConvert - Traditional and Simplified Chinese mappings - metacpan.org, https://metacpan.org/pod/Encode::HanConvert

[22] Encode::UTF8Mac - "utf-8-mac" a variant utf-8 used by OSX filesystem - metacpan.org, https://metacpan.org/pod/Encode::UTF8Mac

[28] Encode::Safename - An encoding for safe filenames. - metacpan.org, https://metacpan.org/pod/Encode::Safename

[29] GitHub - jeffa/Encode-Wechsler: Just another Wechsler encoder/decoder, https://github.com/jeffa/Encode-Wechsler

[31] Encode::HanDetect - Cross-encoding, cross-variant Chinese decoder - metacpan.org, https://metacpan.org/pod/Encode::HanDetect

[33] Encode::Buckwalter - ASCII-based Transliteration for Arabic - metacpan.org, https://metacpan.org/pod/Encode::Buckwalter

[38] GitHub - athreef/Encode-Arabic-Franco: Perl module for Transliteration from 3rbeezy to عربي, https://github.com/athreef/Encode-Arabic-Franco

[39] Encode::MIME::EncWords - MIME 'B' and 'Q' header encoding (alternative) - metacpan.org, https://metacpan.org/pod/Encode::MIME::EncWords

[40] Encode::JavaScript::UCS - JavaScript unicode character encoding - metacpan.org, https://metacpan.org/pod/Encode::JavaScript::UCS

[41] Encode::JavaScript::Cyrillic - Javascript bug fix for cyrillic((bug : %u0410 -%u044f)) - metacpan.org, https://metacpan.org/pod/Encode::JavaScript::Cyrillic


[52] teckit/source/Perl/lib/Encode/TECkit.pm at master · silnrsi/teckit · GitHub, https://github.com/silnrsi/teckit/blob/master/source/Perl/lib/Encode/TECkit.pm

採録基準#

[43] 本体 Encode の採用の基準はよくわかりません。 開発当時に MIMEWeb でよく使われたものや、有名なものなどが入っているように見えますが、 客観的、理論的な基準があるようには見えません。また、 その後の状況等を反映した更新もなされていないように見えます。

[44] 本体以外の追加モジュールは自由に開発、 CPAN 登録されているため本体以上にばらばらで、 品質もまとめ方も、何を「符号化」とみなすかも様々です。

[45] 欧州東アジアの公開インターネットの主要な文字符号化はカバーされているように見えます。

[46] 非公開のシステムも EBCDIC の主要なものなどは一通り揃っているようですが、 マイナーなものや細かいバリエーションなどにはほぼ対応できていなそうなのは、 性質上致し方ないのでしょう。

[47] アジア (中央アジア, 東南アジア, 南アジア, 西アジア) 系は弱いようにみえます。この領域は他のプログラミング言語でも標準ライブラリーは貧弱で、 業界全体の課題といえます。

Web での利用#

[48] Encode は、 Webサーバー等での利用でよく使われる Perl の標準ライブラリーということで、 平成時代中後期には Web 関連でも非常によく利用されました。

[49] しかしながら、 Webにおける文字コードの処理は現在では Encoding Standard によって精密に規定されるようになったものの、 Encode はそれに追随できていないようです。

[50] HTML, CSS, その他 Web 用の文字符号化の処理では、 Web::Encoding など最新の Web標準に対応したPerlモジュールを使う必要があります。

[51] Encode 等の HTML StandardEncoding Standard の規定と異なる挙動をする可能性のある Perlモジュールを使うと、 Webブラウザー等と動作の食い違いによってデータを破損させてしまったり、 場合によってはセキュリティーの問題を引き起こすおそれがあります。

メモ#

[2] 最近の Encode だと、入力が不正な UTF-8decode した時、 utf8フラグがついた不正な文字列が返されるようです。 結果、次の適当なタイミングで Malformed UTF-8 character (fatal) エラーが出て死ぬようです。 (古い Perl でも最新の Perl でも。)