[1] [DFN[[CODE(perl)@en[[[Encode]]]]]] は、[[文字コード]]の[[符号化]]と[[復号]]を行う
[[Perlモジュール]] ([[中核モジュール]]) です。

* 本体モジュール

[REFS[

-
[3] 
[CITE@en-US[Encode - character encodings in Perl - metacpan.org]], [TIME[2025-06-25T02:42:52.000Z]] <https://metacpan.org/pod/Encode>
-
[4] 
[CITE@en[GitHub - dankogai/p5-encode: Encode - character encodings (for Perl 5.8 or better)]], [TIME[2025-06-25T02:43:21.000Z]] <https://github.com/dankogai/p5-encode>

]REFS]

* 追加モジュール

[8] [CITE@en-US[Encode::HanExtra - Extra sets of Chinese encodings - metacpan.org]], [TIME[2025-06-25T03:01:55.000Z]] <https://metacpan.org/pod/Encode::HanExtra>

[5] [CITE@en-US[Encode::IBM - IBM-specific encoding mappings - metacpan.org]], [TIME[2025-06-25T02:57:14.000Z]] <https://metacpan.org/pod/Encode::IBM>

[7] 
[CITE@en-US[Encode::X11 - character encodings for X11 - metacpan.org]], [TIME[2025-06-25T03:01:34.000Z]] <https://metacpan.org/pod/Encode::X11>

- [9] 
[CITE@en[GitHub - andk/Encode-MAB2: German legacy library data format MAB]], [TIME[2025-06-25T03:05:43.000Z]] <https://github.com/andk/Encode-MAB2>
-- [10] 
[CITE@en[Encode-MAB2/lib/Encode/MAB2table.ucm at master · andk/Encode-MAB2 · GitHub]], [TIME[2025-06-25T03:06:42.000Z]] <https://github.com/andk/Encode-MAB2/blob/master/lib/Encode/MAB2table.ucm>

[11] [CITE@en-US[Encode::BOCU1 - encodes / decodes BOCU-1 string, works as part of Encode.pm - metacpan.org]], [TIME[2025-06-25T03:07:13.000Z]] <https://metacpan.org/pod/Encode::BOCU1>

[14] 
[CITE@en-US[Encode::HP - Extra sets of HP encodings - metacpan.org]], [TIME[2025-06-25T07:24:59.000Z]] <https://metacpan.org/pod/Encode::HP>

[15] 
[CITE@en-US[Encode::VN - Extra sets of Vietnamese encodings - metacpan.org]], [TIME[2025-06-25T07:25:47.000Z]] <https://metacpan.org/pod/Encode::VN>

[16] 
[CITE@en-US[Encode::JIS2K - JIS X 0212 (aka JIS 2000) Encodings - metacpan.org]], [TIME[2025-06-25T07:42:57.000Z]] <https://metacpan.org/pod/Encode::JIS2K>

[26] 
[CITE@en-US[Encode::JISX0213 - JIS X 0213 encodings - metacpan.org]], [TIME[2025-06-25T07:57:08.000Z]] <https://metacpan.org/pod/Encode::JISX0213>



[34] 
[CITE@en-US[Encode::EUCJPASCII - eucJP-ascii - An eucJP-open mapping - metacpan.org]], [TIME[2025-06-25T08:02:45.000Z]] <https://metacpan.org/pod/Encode::EUCJPASCII>


[20] 
[CITE@en-US[Encode::EUCJPMS - Microsoft Compatible Encodings for Japanese - metacpan.org]], [TIME[2025-06-25T07:52:30.000Z]] <https://metacpan.org/pod/Encode::EUCJPMS>

[21] [CITE@en-US[Encode::ISO2022 - ISO/IEC 2022 character encoding scheme - metacpan.org]], [TIME[2025-06-25T07:52:56.000Z]] <https://metacpan.org/pod/Encode::ISO2022>


[17] [CITE@en-US[Encode::RAD50 - Convert to and from the Rad50 character set. - metacpan.org]], [TIME[2025-06-25T07:45:49.000Z]] <https://metacpan.org/pod/Encode::RAD50>

- [18] 
[CITE@en-US[Encode::PDFDoc - PDFDocEncoding support - metacpan.org]], [TIME[2025-06-25T07:49:13.000Z]] <https://metacpan.org/pod/Encode::PDFDoc>
-- [19] 
[CITE@en-US[PDFDoc.ucm - metacpan.org]], [TIME[2019-07-12T21:18:15.000Z]], [TIME[2025-06-25T07:49:25.359Z]] <https://metacpan.org/release/EUGEN/Encode-PDFDoc-0.03/source/PDFDoc.ucm>


[23] 
[CITE@en[Encode-BetaCode/lib/Encode/BetaCode.pm at master · dgkontopoulos/Encode-BetaCode · GitHub]], [TIME[2025-06-25T07:56:04.000Z]] <https://github.com/dgkontopoulos/Encode-BetaCode/blob/master/lib/Encode/BetaCode.pm>

[24] 
[CITE@en[Encode-DIN66003/ucm/din66003.ucm at master · Corion/Encode-DIN66003 · GitHub]], [TIME[2025-06-25T07:56:27.000Z]] <https://github.com/Corion/Encode-DIN66003/blob/master/ucm/din66003.ucm>

[25] 
[CITE@en[GitHub - rjbs/Encode-IMAPUTF7]], [TIME[2025-06-25T07:56:48.000Z]] <https://github.com/rjbs/Encode-IMAPUTF7>

[32] [CITE@en-US[Encode::Bootstring - Encode and decode utf8 into a set of basic code points - metacpan.org]], [TIME[2025-06-25T08:02:00.000Z]] <https://metacpan.org/pod/Encode::Bootstring>



[27] 
[CITE@en-US[Encode::Punycode - Encode plugin for Punycode (RFC 3492) - metacpan.org]], [TIME[2025-06-25T07:57:53.000Z]] <https://metacpan.org/pod/Encode::Punycode>

[30] 
[CITE@en-US[Encode::DosHebrew - DOS Hebrew Encoding - metacpan.org]], [TIME[2025-06-25T07:59:25.000Z]] <https://metacpan.org/pod/Encode::DosHebrew>

[35] 
[CITE@en-US[Encode::DoubleEncodedUTF8 - Fix double encoded UTF-8 bytes to the correct one - metacpan.org]], [TIME[2025-06-25T08:08:29.000Z]] <https://metacpan.org/pod/Encode::DoubleEncodedUTF8>

[36] 
[CITE@en-US[Encode::JP::Emoji - Emoji encodings and cross-mapping tables in pure Perl - metacpan.org]], [TIME[2025-06-25T08:10:08.000Z]] <https://metacpan.org/pod/Encode::JP::Emoji>

[37] 
[CITE@en-US[Encode::JP::Mobile - 日本の携帯電話向け Shift_JIS (CP932) / UTF-8 エンコーディング - metacpan.org]], [TIME[2025-06-25T08:10:38.000Z]] <https://metacpan.org/pod/Encode::JP::Mobile>

[42] 
[CITE@en-US[Encode::JP::Mobile::UnicodeEmoji - Unicode Emoji mapping for Encode::JP::Mobile - metacpan.org]], [TIME[2025-06-25T08:21:02.000Z]] <https://metacpan.org/pod/Encode::JP::Mobile::UnicodeEmoji>

-*-*-

[6] [CITE@en-US[TeX::Encode - Encode/decode Perl utf-8 strings into TeX - metacpan.org]], [TIME[2025-06-25T02:58:35.000Z]] <https://metacpan.org/pod/TeX::Encode>

[12] 
[CITE@en-US[Encode::CNMap - enhanced Chinese encodings with Simplified-Traditional auto-mapping - metacpan.org]], [TIME[2025-06-25T03:07:30.000Z]] <https://metacpan.org/pod/Encode::CNMap>

[13] [CITE@en-US[Encode::HanConvert - Traditional and Simplified Chinese mappings - metacpan.org]], [TIME[2025-06-25T03:09:28.000Z]] <https://metacpan.org/pod/Encode::HanConvert>

[22] 
[CITE@en-US[Encode::UTF8Mac - "utf-8-mac" a variant utf-8 used by OSX filesystem - metacpan.org]], [TIME[2025-06-25T07:54:19.000Z]] <https://metacpan.org/pod/Encode::UTF8Mac>

[28] 
[CITE@en-US[Encode::Safename - An encoding for safe filenames. - metacpan.org]], [TIME[2025-06-25T07:58:08.000Z]] <https://metacpan.org/pod/Encode::Safename>

[29] 
[CITE@en[GitHub - jeffa/Encode-Wechsler: Just another Wechsler encoder/decoder]], [TIME[2025-06-25T07:58:36.000Z]] <https://github.com/jeffa/Encode-Wechsler>

[31] 
[CITE@en-US[Encode::HanDetect - Cross-encoding, cross-variant Chinese decoder - metacpan.org]], [TIME[2025-06-25T08:00:21.000Z]] <https://metacpan.org/pod/Encode::HanDetect>

[33] 
[CITE@en-US[Encode::Buckwalter - ASCII-based Transliteration for Arabic - metacpan.org]], [TIME[2025-06-25T08:02:22.000Z]] <https://metacpan.org/pod/Encode::Buckwalter>

[38] 
[CITE@en[GitHub - athreef/Encode-Arabic-Franco: Perl module for Transliteration from 3rbeezy to عربي]], [TIME[2025-06-25T08:16:03.000Z]] <https://github.com/athreef/Encode-Arabic-Franco>

[39] 
[CITE@en-US[Encode::MIME::EncWords - MIME 'B' and 'Q' header encoding (alternative) - metacpan.org]], [TIME[2025-06-25T08:16:41.000Z]] <https://metacpan.org/pod/Encode::MIME::EncWords>

[40] 
[CITE@en-US[Encode::JavaScript::UCS - JavaScript unicode character encoding - metacpan.org]], [TIME[2025-06-25T08:16:55.000Z]] <https://metacpan.org/pod/Encode::JavaScript::UCS>

[41] 
[CITE@en-US[Encode::JavaScript::Cyrillic - Javascript bug fix for cyrillic((bug : %u0410 -%u044f)) - metacpan.org]], [TIME[2025-06-25T08:19:59.000Z]] <https://metacpan.org/pod/Encode::JavaScript::Cyrillic>

-*-*-

[52] 
[CITE@en[teckit/source/Perl/lib/Encode/TECkit.pm at master · silnrsi/teckit · GitHub]], [TIME[2025-07-05T14:18:37.000Z]] <https://github.com/silnrsi/teckit/blob/master/source/Perl/lib/Encode/TECkit.pm>



* 採録基準

[43] 
本体 [CODE[Encode]] の採用の基準はよくわかりません。 開発当時に [[MIME]] や [[Web]]
でよく使われたものや、有名なものなどが入っているように見えますが、
客観的、理論的な基準があるようには見えません。また、
その後の状況等を反映した更新もなされていないように見えます。

[44] 
本体以外の追加モジュールは自由に開発、 [[CPAN]] 登録されているため本体以上にばらばらで、
品質もまとめ方も、何を「符号化」とみなすかも様々です。

[45] 
[[欧州]]や[[東アジア]]の公開インターネットの主要な[[文字符号化]]はカバーされているように見えます。

[46] 
非公開のシステムも [[EBCDIC]] の主要なものなどは一通り揃っているようですが、
マイナーなものや細かいバリエーションなどにはほぼ対応できていなそうなのは、
性質上致し方ないのでしょう。

[47] 
[[アジア]] ([[中央アジア]], [[東南アジア]], [[南アジア]], [[西アジア]]) 系は弱いようにみえます。この領域は他の[[プログラミング言語]]でも標準ライブラリーは貧弱で、
業界全体の課題といえます。

* Web での利用

[48] 
[CODE[Encode]]
は、
[[Webサーバー]]等での利用でよく使われる [[Perl]] の標準ライブラリーということで、
[[平成時代]]中後期には [[Web]] 関連でも非常によく利用されました。

[49] 
しかしながら、 [[Webにおける文字コード]]の処理は現在では [CITE[Encoding Standard]]
によって精密に規定されるようになったものの、 [CODE[Encode]] 
はそれに追随できていないようです。

[50] 
[[HTML]], [[CSS]], その他 [[Web]] 用の[[文字符号化]]の処理では、
[CODE[Web::Encoding]]
など最新の [[Web標準]]に対応した[[Perlモジュール]]を使う必要があります。

[51] 
[CODE[Encode]] 等の [CITE[HTML Standard]] や [CITE[Encoding Standard]]
の規定と異なる挙動をする可能性のある [[Perlモジュール]]を使うと、
[[Webブラウザー]]等と動作の食い違いによってデータを破損させてしまったり、
場合によっては[[セキュリティー][Webセキュリティー]]の問題を引き起こすおそれがあります。


* メモ

[2] 最近の [CODE(perl)[Encode]] だと、入力が不正な [[UTF-8]] で
[CODE[decode]] した時、 [[utf8フラグ]]がついた不正な[[文字列]]が返されるようです。
結果、次の適当なタイミングで 
[CODE[Malformed UTF-8 character (fatal)]] エラーが出て死ぬようです。
(古い [[Perl]] でも最新の [[Perl]] でも。) [TIME[2016-08-13T16:05:05.900Z]]