1 # Copyright (c) 1987, Fujitsu LTD. (Itaru ICHIKAWA).
2 # Copyright (c) 1996-2018, The nkf Project.
5 # This software is provided 'as-is', without any express or implied
6 # warranty. In no event will the authors be held liable for any damages
7 # arising from the use of this software.
9 # Permission is granted to anyone to use this software for any purpose,
10 # including commercial applications, and to alter it and redistribute it
11 # freely, subject to the following restrictions:
13 # 1. The origin of this software must not be misrepresented; you must not
14 # claim that you wrote the original software. If you use this software
15 # in a product, an acknowledgment in the product documentation would be
16 # appreciated but is not required.
18 # 2. Altered source versions must be plainly marked as such, and must not be
19 # misrepresented as being the original software.
21 # 3. This notice may not be removed or altered from any source distribution.
26 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
31 @ISA = qw(Exporter DynaLoader);
32 # Items to export into callers namespace by default. Note: do not export
33 # names by default without a very good reason. Use EXPORT_OK instead.
34 # Do not simply export all your public functions/methods/constants.
36 nkf nkf_continue inputcode
40 bootstrap NKF $VERSION;
42 # Preloaded methods go here.
44 # Autoload methods go after =cut, and are processed by the autosplit program.
50 # =begin FUNC ¤«¤é =end FUNC ¤Þ¤Ç¤Ï Perl/NKF ¤Î¥É¥¥å¥á¥ó¥È
51 # =begin COMMAND ¤«¤é =end COMMAND ¤Þ¤Ç¤Ï nkf ¥³¥Þ¥ó¥É¤Î¥É¥¥å¥á¥ó¥È
58 NKF - Perl extension for Network Kanji Filter
64 nkf - Network Kanji Filter
73 $output = nkf("-s",$input);
79 nkf B<[-butjnesliohrTVvwWJESZxXFfmMBOcdILg]> B<[>I<file ...>B<]>
87 This is a Perl Extension version of nkf (Network Kanji Filter).
88 It converts the last argument and return converted result. Conversion
89 details are specified by flags before the last argument.
93 B<Nkf> is a yet another kanji code converter among networks, hosts and terminals.
94 It converts input kanji code to designated kanji code
95 such as ISO-2022-JP, Shift_JIS, EUC-JP, UTF-8, UTF-16 or UTF-32.
97 One of the most unique faculty of B<nkf> is the guess of the input kanji encodings.
98 It currently recognizes ISO-2022-JP, Shift_JIS, EUC-JP, UTF-8, UTF-16 and UTF-32.
99 So users needn't set the input kanji code explicitly.
101 By default, X0201 kana is converted into X0208 kana.
102 For X0201 kana, SO/SI, SSO and ESC-(-I methods are supported.
103 For automatic code detection, nkf assumes no X0201 kana in Shift_JIS.
104 To accept X0201 in Shift_JIS, use B<-X>, B<-x> or B<-S>.
106 multiple options are specified as separate strings, such as
108 print nkf('--ic=UTF8-MAC', '-w', $string), "\n";
110 except the last arguments.
116 =item B<-J -S -E -W -W16 -W32 -j -s -e -w -w16 -w32>
118 Specify input and output encodings. Upper case is input.
125 ISO-2022-JP (JIS code).
129 Shift_JIS and JIS X 0201 kana.
130 EUC-JP is recognized as X0201 kana. Without B<-x> flag,
131 JIS X 0201 Katakana (a.k.a.halfwidth kana) is converted into JIS X 0208.
132 If you use Windows, see Windows-31J (CP932).
145 B or L gives whether Big Endian or Little Endian.
146 0 gives whether put BOM or not.
151 B or L gives whether Big Endian or Little Endian.
152 0 gives whether put BOM or not.
158 Output is buffered (DEFAULT), Output is unbuffered.
166 Specify the escape sequence for JIS X 0208.
172 Use ESC ( @. (JIS X 0208-1978)
176 Use ESC ( B. (JIS X 0208-1983/1990 DEFAULT)
182 Specify the escape sequence for US-ASCII/JIS X 0201 Roman. (DEFAULT B)
186 {de/en}crypt ROT13/47
188 =item B<-h[123] --hiragana --katakana --katakana-hiragana>
192 =item B<-h1 --hiragana>
194 Katakana to Hiragana conversion.
196 =item B<-h2 --katakana>
198 Hiragana to Katakana conversion.
200 =item B<-h3 --katakana-hiragana>
202 Katakana to Hiragana and Hiragana to Katakana conversion.
208 Text mode output (MS-DOS)
210 =item B<-f[I<m> [- I<n>]]>
212 Folding on I<m> length with I<n> margin in a line.
213 Without this option, fold length is 60 and fold margin is 10.
217 New line preserving line folding.
221 Convert X0208 alphabet (Fullwidth Alphabets) to ASCII.
227 Convert X0208 alphabet to ASCII.
231 Convert X0208 kankaku to single ASCII space.
235 Convert X0208 kankaku to double ASCII spaces.
239 Replacing fullwidth >, <, ", & into '>', '<', '"', '&' as in HTML.
245 With B<-X> or without this option, X0201 is converted into X0208 Kana.
246 With B<-x>, try to preserve X0208 kana and do not convert X0201 kana to X0208.
247 In JIS output, ESC-(-I is used. In EUC output, SS2 is used.
251 Assume broken JIS-Kanji input, which lost ESC.
252 Useful when your site is using old B-News Nihongo patch.
258 allows any chars after ESC-( or ESC-$.
262 force ASCII after NL.
268 Replacing non iso-2022-jp char into a geta character
269 (substitute character in Japanese).
273 MIME ISO-2022-JP/ISO8859-1 decode. (DEFAULT)
274 To see ISO8859-1 (Latin-1) -l is necessary.
280 Decode MIME base64 encoded stream. Remove header or other part before
285 Decode MIME quoted stream. '_' in quoted stream is converted to space.
290 It allows line break in the middle of the base64 encoding.
300 MIME encode. Header style. All ASCII code and control characters are intact.
306 MIME encode Base64 stream.
307 Kanji conversion is performed before encoding, so this cannot be used as a picture encoder.
311 Perform quoted encoding.
317 Input and output code is ISO8859-1 (Latin-1) and ISO-2022-JP.
318 B<-s>, B<-e> and B<-x> are not compatible with this option.
320 =item B<-L[uwm] -d -c>
338 Without this option, nkf doesn't convert line breaks.
342 =item B<--fj --unix --mac --msdos --windows>
344 Convert for these systems.
346 =item B<--jis --euc --sjis --mime --base64>
348 Convert to named code.
350 =item B<--jis-input --euc-input --sjis-input --mime-input --base64-input>
354 =item B<--ic=I<input codeset> --oc=I<output codeset>>
356 Set the input or output codeset.
357 NKF supports following codesets and those codeset names are case insensitive.
363 a.k.a. RFC1468, 7bit JIS, JUNET
365 =item EUC-JP (eucJP-nkf)
367 a.k.a. AT&T JIS, Japanese EUC, UJIS
375 Microsoft Version of EUC-JP.
379 a.k.a. SJIS, MS_Kanji
397 =item UTF8-MAC (input only)
407 UTF-16 Big Endian without BOM
411 UTF-16 Big Endian with BOM
415 UTF-16 Little Endian without BOM
419 UTF-16 Little Endian with BOM
427 UTF-32 Big Endian without BOM
431 UTF-32 Big Endian with BOM
435 UTF-32 Little Endian without BOM
439 UTF-32 Little Endian with BOM
443 =item B<--fb-{skip, html, xml, perl, java, subchar}>
445 Specify the way that nkf handles unassigned characters.
446 Without this option, --fb-skip is assumed.
448 =item B<--prefix=I<escape character>I<target character>..>
450 When nkf converts to Shift_JIS,
451 nkf adds a specified escape character to specified 2nd byte of Shift_JIS characters.
452 1st byte of argument is the escape character and following bytes are target characters.
454 =item B<--no-cp932ext>
456 Handle the characters extended in CP932 as unassigned characters.
458 =item B<--no-best-fit-chars>
460 When Unicode to Encoded byte conversion,
461 don't convert characters which is not round trip safe.
462 When Unicode to Unicode conversion,
463 with this and -x option, nkf can be used as UTF converter.
464 (In other words, without this and -x option, nkf doesn't save some characters)
466 When nkf converts strings that related to path, you should use this option.
470 Decode hex encoded characters.
474 Unescape percent escaped characters.
476 =item B<--numchar-input>
478 Decode character reference, such as "&#....;".
482 =item B<--in-place[=>I<SUFFIX>B<]> B<--overwrite[=>I<SUFFIX>B<]>
484 Overwrite B<original> listed files by filtered result.
486 B<Note> --overwrite preserves timestamps of original files.
488 =item B<--guess=[12]>
490 Print guessed encoding and newline. (2 is default, 1 is only encoding)
504 Ignore rest of -option.
510 Copyright (c) 1987, Fujitsu LTD. (Itaru ICHIKAWA).
512 Copyright (c) 1996-2018, The nkf Project.