NKF

NKF

NKF — Network Kanji Filter의 Ruby 확장이에요.

출처: Ruby 3.3 API

본문

설명 (Description)

이것은 nkf(Network Kanji Filter)의 Ruby 확장 버전이에요. 첫 번째 인자를 변환하고, 변환된 결과를 돌려줘요. 변환 세부사항은 첫 번째 인자인 플래그로 지정돼요.

nkf는 네트워크, 호스트, 터미널 사이에서 쓰는 또 하나의 한자 코드 변환기예요. 입력 한자 코드를 ISO-2022-JP, Shift_JIS, EUC-JP, UTF-8 또는 UTF-16 같은 지정된 한자 코드로 변환해요.

nkf의 가장 독특한 기능 중 하나는 입력 한자 인코딩을 추측(guess)한다는 점이에요. 현재 ISO-2022-JP, Shift_JIS, EUC-JP, UTF-8, UTF-16을 인식해요. 그래서 사용자가 입력 한자 코드를 명시적으로 설정할 필요가 없어요.

기본적으로 X0201 가나(kana)는 X0208 가나로 변환돼요. X0201 가나에는 SO/SI, SSO, ESC-(-I 메서드가 지원돼요. 자동 코드 감지를 위해 nkf는 Shift_JIS에 X0201 가나가 없다고 가정해요. Shift_JIS에서 X0201을 받아들이려면 -X, -x 또는 -S를 사용하세요.

플래그 (Flags)

-b -u

출력이 버퍼링됨(DEFAULT), / 출력이 버퍼링되지 않음.

-j -s -e -w -w16 -w32

출력 코드가 ISO-2022-JP(7bit JIS), Shift_JIS, EUC-JP, UTF-8N, UTF-16BE, UTF-32BE. 이 옵션과 컴파일 옵션이 없으면 ISO-2022-JP가 가정돼요.

-J -S -E -W -W16 -W32

입력 가정이 JIS 7 bit, Shift_JIS, EUC-JP, UTF-8, UTF-16, UTF-32.

  • -J: JIS 입력을 가정해요. EUC-JP도 받아들여요. 이것이 기본값이에요. 이 플래그는 Shift_JIS를 배제하지 않아요.
  • -S: Shift_JIS와 X0201 가나 입력을 가정해요. JIS도 받아들여요. EUC-JP는 X0201 가나로 인식돼요. -x 플래그가 없으면 X0201 가나(반각 가나)가 X0208로 변환돼요.
  • -E: EUC-JP 입력을 가정해요. JIS도 받아들여요. -J와 같아요.

-t

변환 없음.

-i_

JIS-한자를 지정하는 출력 시퀀스. (DEFAULT B)

-o_

ASCII를 지정하는 출력 시퀀스. (DEFAULT B)

-r

ROT13/47 암호화/복호화.

-h[123] --hiragana --katakana --katakana-hiragana

  • -h1 / --hiragana: 가타카나를 히라가나로 변환.
  • -h2 / --katakana: 히라가나를 가타카나로 변환.
  • -h3 / --katakana-hiragana: 가타카나→히라가나, 히라가나→가타카나 양방향 변환.

-T

텍스트 모드 출력 (MS-DOS).

-l

ISO8859-1 (Latin-1) 지원.

-f[m[-n]]

한 줄에서 n 여백으로 m 길이에서 접기(folding). 이 옵션이 없으면 접기 길이는 60, 접기 여백은 10이에요.

-F

개행을 보존하는 줄 접기.

-Z[0-3]

X0208 알파벳(전각 알파벳)을 ASCII로 변환.

  • -Z, -Z0: X0208 알파벳을 ASCII로 변환.
  • -Z1: X0208 공백을 ASCII 공백 하나로 변환.
  • -Z2: X0208 공백을 ASCII 공백 두 개로 변환.
  • -Z3: 전각 >, <, ", &을 HTML처럼 '&gt;', '&lt;', '&quot;', '&amp;'으로 치환.

-X -x

MS-Kanji에서 X0201 가나를 가정. -X 또는 이 옵션이 없으면 X0201이 X0208 가나로 변환돼요. -x를 쓰면 X0208 가나를 보존하려 하고 X0201 가나를 X0208로 변환하지 않아요. JIS 출력에서는 ESC-(-I가, EUC 출력에서는 SSO가 사용돼요.

-B[0-2]

ESC를 잃어버린 깨진(broken) JIS-한자 입력을 가정. 사이트가 오래된 B-News Nihongo 패치를 쓸 때 유용해요.

  • -B1: ESC-( 또는 ESC-$ 뒤에 어떤 문자든 허용.
  • -B2: NL 뒤에 ASCII를 강제.

-I

비 iso-2022-jp 문자를 게타(geta) 문자(일본어의 대체 문자)로 치환.

-d -c

줄 바꿈에서 r 삭제 / 줄 바꿈에 r 추가.

-m[BQN0]

MIME ISO-2022-JP/ISO8859-1 디코드. (DEFAULT) ISO8859-1 (Latin-1)을 보려면 -l이 필요해요.

  • -mB: MIME base64로 인코딩된 스트림을 디코드. 변환 전에 헤더나 앞부분을 제거.
  • -mQ: MIME quoted 스트림을 디코드. quoted 스트림의 _는 공백으로 변환.
  • -mN: 엄격하지 않은 디코딩. base64 인코딩 중간에 줄 바꿈을 허용.
  • -m0: MIME 디코드 없음.

-M

MIME 인코드. 헤더 스타일. 모든 ASCII 코드와 제어 문자는 그대로예요. 한자 변환은 인코딩 전에 수행되므로, 그림 인코더로는 쓸 수 없어요.

  • -MB: MIME Base64 스트림 인코드.
  • -MQ: quoted 인코딩 수행.

-l

입출력 코드가 ISO8859-1 (Latin-1)과 ISO-2022-JP. -s, -e, -x는 이 옵션과 호환되지 않아요.

-L[uwm]

새 줄 모드. 이 옵션이 없으면 nkf는 줄 바꿈을 변환하지 않아요.

  • -Lu: unix (LF)
  • -Lw: windows (CRLF)
  • -Lm: mac (CR)

--fj --unix --mac --msdos --windows

각 시스템용으로 변환.

--jis --euc --sjis --mime --base64

이름 붙은 코드로 변환.

--jis-input --euc-input --sjis-input --mime-input --base64-input

입력 시스템 가정.

--ic=input codeset --oc=`output codeset``

입력·출력 코드셋을 설정. NKF는 다음 코드셋들을 지원하며, 그 코드셋 이름은 대소문자를 구분하지 않아요.

  • ISO-2022-JP — a.k.a. RFC1468, 7bit JIS, JUNET
  • EUC-JP (eucJP-nkf) — a.k.a. AT&T JIS, Japanese EUC, UJIS
  • eucJP-ascii — a.k.a. x-eucjp-open-19970715-ascii
  • eucJP-ms — a.k.a. x-eucjp-open-19970715-ms
  • CP51932 — Microsoft 버전 EUC-JP
  • Shift_JISSJIS, MS-Kanji
  • Windows-31J — a.k.a. CP932
  • UTF-8 — UTF-8N과 같음
  • UTF-8N — BOM 없는 UTF-8
  • UTF-8-BOM — BOM 있는 UTF-8
  • UTF-16 — UTF-16BE와 같음
  • UTF-16BE — BOM 없는 UTF-16 Big Endian
  • UTF-16BE-BOM — BOM 있는 UTF-16 Big Endian
  • UTF-16LE — BOM 없는 UTF-16 Little Endian
  • UTF-16LE-BOM — BOM 있는 UTF-16 Little Endian
  • UTF-32 — UTF-32BE와 같음
  • UTF-32BE — BOM 없는 UTF-32 Big Endian
  • UTF-32BE-BOM — BOM 있는 UTF-32 Big Endian
  • UTF-32LE — BOM 없는 UTF-32 Little Endian
  • UTF-32LE-BOM — BOM 있는 UTF-32 Little Endian
  • UTF8-MAC — NKD된 UTF-8, a.k.a. UTF8-NFD (입력 전용)

--fb-{skip, html, xml, perl, java, subchar}

nkf가 할당되지 않은 문자를 다루는 방식을 지정. 이 옵션이 없으면 --fb-skip이 가정돼요.

--prefix=escape character target character ..

nkf가 Shift_JIS로 변환할 때, 지정한 Shift_JIS 문자의 두 번째 바이트에 지정한 이스케이프 문자를 추가해요. 인자의 첫 바이트가 이스케이프 문자이고, 이어지는 바이트가 대상 문자예요.

--no-cp932ext

CP932에서 확장된 문자를 할당되지 않은 문자로 취급.

--no-best-fit-chars

Unicode→인코딩된 바이트 변환 시, 라운드 트립이 안전하지 않은 문자를 변환하지 않아요. Unicode→Unicode 변환에서는 이것과 -x 옵션을 쓰면 nkf를 UTF 변환기로 쓸 수 있어요. (다시 말해, 이것과 -x 옵션이 없으면 nkf는 일부 문자를 저장하지 않아요.)

nkf가 경로(path)와 관련된 문자열을 변환할 때는 이 옵션을 사용해야 해요.

--cap-input

16진수로 인코딩된 문자를 디코드.

--url-input

퍼센트 이스케이프된 문자를 언이스케이프.

--

나머지 -option을 무시.

Constants

ASCII, AUTO, BINARY, EUC, JIS, NOCONV, SJIS, UNKNOWN, UTF16, UTF32, UTF8

각각의 문자 코드 상수예요.

GEM_VERSION

nkf 라이브러리의 버전.

NKF_RELEASE_DATE

nkf의 릴리즈 날짜.

NKF_VERSION

nkf의 버전.

VERSION

nkf의 전체 버전 문자열.

Public Class Methods

guess(str) → encoding

nkf 루틴으로 str의 인코딩을 추측한 결과를 돌려줘요.

nkf(opt, str) → string

str을 변환하고 변환된 결과를 돌려줘요. 변환 세부사항은 optString으로 지정해요.

require 'nkf'
output = NKF.nkf("-s", input)

더 알아보기

  • 문자열 및 파일의 문자 코드를 다루는 String#encodeKconv 모듈도 함께 살펴보세요.