ioerror

nkf - 네트워크 코드 변경을 위한 문자열 인코딩 변환 명령어 본문

OS

nkf - 네트워크 코드 변경을 위한 문자열 인코딩 변환 명령어

반응형

nkf - Network Kanji Filter

다양한 문자 인코딩(EUC-JP, Shift_JIS, UTF-8, ISO-2022-JP 등)으로 작성된 텍스트 파일의 문자 코드를 자동으로 인식하고 지정한 인코딩으로 변환하는 명령어이다. 주로 일본어 환경에서 생성된 문서의 깨짐 현상을 해결하거나, 이메일 시스템 등에서 표준 네트워크 간지 코드로 변환할 때 사용된다. 입력 스트림이나 파일의 코드를 판별하여 리다이렉션 또는 파일 직접 수정 방식으로 결과를 출력한다. 기본적으로 Unix/Linux 및 macOS 환경에서 패키지 관리자를 통해 설치 후 사용 가능하다.

1. 명령어 용도

  • 서버 로그나 이전 레거시 시스템에서 생성된 깨진 텍스트 파일을 UTF-8로 일괄 변환하여 호환성을 확보할 때 주로 사용된다.
  • 텍스트 파일의 현재 인코딩 형식이 무엇인지 불분명할 때 이를 자동으로 판별하는 용도로도 자주 활용된다.
Bash
 
# 깨진 일본어 텍스트 파일의 인코딩을 자동으로 판별하는 예시
nkf -g legacy_file.txt
# [결과] Shift_JIS

# Shift_JIS로 되어 있는 파일을 UTF-8로 변환하여 새 파일로 저장하는 예시
nkf -w legacy_file.txt > utf8_file.txt

2. 명령어 서식

Bash
 
nkf [옵션] [파일...]

3. 명령어 옵션

옵션 설명 사용가능 OS 및 쉘
-j ISO-2022-JP (JIS) 코드로 출력한다.  
-s Shift_JIS 코드로 출력한다.  
-e EUC-JP 코드로 출력한다.  
-w UTF-8 코드로 출력한다. (BOM 없음)  
-w8 UTF-8 코드로 출력한다. (BOM 있음)  
-w16 UTF-16 코드로 출력한다.  
-g 입력 파일의 문자 코드를 자동 판별하여 표시한다. (--guess)  
--overwrite 변환된 내용을 기존 파일에 그대로 덮어쓴다. [Linux] [macOS]
-Lu 줄 바꿈 코드를 Unix 형태(LF)로 변환한다.  
-Lw 줄 바꿈 코드를 Windows 형태(CRLF)로 변환한다.  
-Lm 줄 바꿈 코드를 Macintosh 형태(CR)로 변환한다.  
Bash
 
# 특정 디렉터리 내의 모든 txt 파일을 UTF-8로 변환하고 원본 파일을 덮어쓰는 예시
nkf -w --overwrite *.txt

# 인코딩 변환과 동시에 개행 문자(CRLF)를 Unix 표준(LF)으로 변경하는 예시
nkf -w -Lu window_file.txt > unix_file.txt

# 문자열을 파이프라인으로 전달받아 인코딩을 판별하는 예시
echo "こんにちは" | nkf -g
# UTF-8
  • UTF-8: 파이프를 통해 전달된 문자열의 인코딩이 현재 시스템 표준인 UTF-8임을 판별하여 출력한 결과이다.

4. 명령어 특이사항(유의사항)

StackOverflow 및 기술 커뮤니티에서 가장 자주 발생하는 문제는 --overwrite 옵션을 사용할 때 원본 파일이 손상되는 현상이다. nkf는 변환 과정에서 에러가 발생하더라도 파일 크기를 0으로 만들거나 불완전한 상태로 덮어쓸 위험이 있으므로, 중요한 데이터는 반드시 백업을 수행하거나 리다이렉션(>)을 이용하여 별도 파일로 결과물을 검증한 뒤 적용하는 것이 권장된다. 또한 고정된 인코딩 변환이 필요한 환경에서는 판별 오류를 줄이기 위해 명시적으로 입력 코드를 지정하는 것이 안전하다.

 

https://ioerror.tistory.com/entry/UNIX-Linux-Command-Reference

 

UNIX & Linux Command Reference

유닉스 / 리눅스 명령어 표유닉스와 리눅스 환경에서 자주 사용되는 필수 명령어들을 완벽하게 정리한다. 서버 관리, 프로그래밍, 일상적인 시스템 운영 등 어떤 목적이든 터미널 환경을 능숙하

ioerror.tistory.com

 

반응형
Comments