Security Advisories (3)
CVE-2016-1238 (2016-07-27)

Loading optional modules from . (current directory).

CVE-2021-36770 (2021-07-17)

Encode.pm, as distributed in Perl through 5.34.0, allows local users to gain privileges via a Trojan horse Encode::ConfigLocal library (in the current working directory) that preempts dynamic module loading. Exploitation requires an unusual configuration, and certain 2021 versions of Encode.pm (3.05 through 3.11). This issue occurs because the || operator evaluates @INC in a scalar context, and thus @INC has only an integer value.

CVE-2011-2939 (2012-01-13)

Off-by-one error in the decode_xs function in Unicode/Unicode.xs in the Encode module before 2.44, as used in Perl before 5.15.6, might allow context-dependent attackers to cause a denial of service (memory corruption) via a crafted Unicode string, which triggers a heap-based buffer overflow.

NAME

Encode::JP - Japanese Encodings

SYNOPSIS

use Encode qw/encode decode/; 
$euc_jp = encode("euc-jp", $utf8);   # loads Encode::JP implicitly
$utf8   = decode("euc-jp", $euc_jp); # ditto

ABSTRACT

This module implements Japanese charset encodings. Encodings supported are as follows.

  Canonical   Alias		Description
  --------------------------------------------------------------------
  euc-jp      /euc.*jp$/i	EUC (Extended Unix Character)
              /jp.*euc/i   
	      /ujis$/i
  shiftjis    /shift.*jis$/i	Shift JIS (aka MS Kanji)
	      /sjis$/i
  7bit-jis    /^jis$/i		7bit JIS
  iso-2022-jp			ISO-2022-JP 
				(7bit JIS with all Halfwidth Kana 
				 converted to Fullwidth)
  iso-2022-jp-1			ISO-2022-JP-1
                                (ISO-2022-JP with JIS X 0212-1990
				 support. See below)
  macjapan      Mac Japan	(Shift JIS + Apple vendor mappings)
  cp932         Code Page 932	(Shift JIS + MS/IBM vendor mappings)
  --------------------------------------------------------------------

DESCRIPTION

To find how to use this module in detail, see Encode.

Note on ISO-2022-JP(-1)?

ISO-2022-JP-1 (RFC2237) is a superset of ISO-2022-JP (RFC1468) which adds support for JIS X 0212-1990. That means you can use the same code to decode to utf8 but not vice versa.

$utf8 = decode('iso-2022-jp-1', $stream);
$utf8 = decode('iso-2022-jp',   $stream);

Yields the same result but

$with_0212 = encode('iso-2022-jp-1', $utf8);

is now different from

$without_0212 = encode('iso-2022-jp', $utf8 );

In the latter case, characters that map to 0212 are at first converted to U+3013 (0xA2AE in EUC-JP; a white square also known as 'Tofu') then fed to decoding engine. U+FFFD is not used to preserve text layout as much as possible.

BUGS

ASCII part (0x00-0x7f) is preserved for all encodings, even though it conflicts with mappings by the Unicode Consortium. See

http://www.debian.or.jp/~kubota/unicode-symbols.html.en

to find why it is implemented that way.

SEE ALSO

Encode