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처럼'>','<','"','&'으로 치환.
-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: MIMEBase64스트림 인코드.-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, 7bitJIS, JUNETEUC-JP(eucJP-nkf) — a.k.a. AT&TJIS, JapaneseEUC, UJISeucJP-ascii— a.k.a. x-eucjp-open-19970715-asciieucJP-ms— a.k.a. x-eucjp-open-19970715-msCP51932— Microsoft 버전 EUC-JPShift_JIS—SJIS, MS-KanjiWindows-31J— a.k.a. CP932UTF-8— UTF-8N과 같음UTF-8N— BOM 없는 UTF-8UTF-8-BOM— BOM 있는 UTF-8UTF-16— UTF-16BE와 같음UTF-16BE— BOM 없는 UTF-16 Big EndianUTF-16BE-BOM— BOM 있는 UTF-16 Big EndianUTF-16LE— BOM 없는 UTF-16 Little EndianUTF-16LE-BOM— BOM 있는 UTF-16 Little EndianUTF-32— UTF-32BE와 같음UTF-32BE— BOM 없는 UTF-32 Big EndianUTF-32BE-BOM— BOM 있는 UTF-32 Big EndianUTF-32LE— BOM 없는 UTF-32 Little EndianUTF-32LE-BOM— BOM 있는 UTF-32 Little EndianUTF8-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을 변환하고 변환된 결과를 돌려줘요. 변환 세부사항은 opt를 String으로 지정해요.
require 'nkf'
output = NKF.nkf("-s", input)
더 알아보기
- 문자열 및 파일의 문자 코드를 다루는
String#encode와Kconv모듈도 함께 살펴보세요.