본문 바로가기
목차
shell

iconv, clip.exe, pbcopy, xclip, Set-Clipboard

by ds31x 2025. 12. 29.
728x90
반응형

iconv

iconv는 Linux(및 유닉스 계열 시스템)에서
텍스트를 한 문자 인코딩에서 다른 문자 인코딩으로 변환하는
표준 유틸리티임.
Converts text from one encoding to another encoding.

 

참고로 iconv는 Windows 네이티브(cmd / PowerShell) 기본 명령이 아니며,
WSL·MSYS2·Git Bash·Cygwin 같은 Unix 계층에서 제공됨.


사용예

WSL에서 한글이 포함되어 utf-8 로 인코딩된 파일의 내용을 clip.exe 를 사용하여 클립보드로 복사시 한글이 깨짐.

 

이같이 깨지는 것을 막기 위해서는 다음과 같이 iconv 로 인코딩 변경한 뒤 전달하면 된다.

iconv -f utf-8 -t utf-16le test.py | clip.exe
  • clip.exeCF_UNICODETEXT 형식(UTF-16 Little Endian, utf-16le)로 인코딩을 가정하고 있기 때문임.

|는 pipe로 앞의 출력을 뒤의 입력으로 연결하는 방법임:

2023.09.12 - [Linux] - [Linux] Pipe(|)와 다중 명령어 (;, &&, ||)

 

[Linux] Pipe(|)와 다중 명령어 (;, &&, ||)

| : PipePipe |는 2개의 processes를 연결해주는 연결 통로로서pipe 앞의 프로세스의 stdout(표준출력)이pipe 뒤의 프로세스의 stdin(표준입력)으로 쓰이도록 연결해주는 것임. 예를 들어 ls|sort|more의 경우 ls

ds31x.tistory.com


참고: clip.exe

clip.exeWindows에서 제공하는 명령행 유틸리티로,
표준 입력(stdin)으로 전달된 텍스트를 Windows 클립보드에 복사하는 역할을 수행.

  • 내부적으로 Windows 클립보드의 CF_UNICODETEXT(UTF-16LE) 형식을 사용
  • UTF-8 입력을 직접 처리하는 데에는 한계가 있음

따라서 WSL 등에서 UTF-8 텍스트를 전달할 경우,
사전에 UTF-16LE로 변환하여 전달하는 것이 안전한 사용 방법

 

macOS에선 pbcopy 이 대응되고, Linux (X11)에선 xclip이 대응됨:

  • 이들은 내부적으로 처리해서 iconv를 쓰지 않아도 UTF-8은 잘 처리함.
OS Copy Paste
Windows (cmd) clip.exe 없음
Windows (PowerShell) Set-Clipboard Get-Clipboard
macOS pbcopy pbpaste
Linux (X11) xclip -sel clip xclip -o -sel clip
Linux (Wayland) wl-copy wl-paste

 

다음의 명령어 사용 예들을 참고.

# Windows
type test.txt | clip.exe

# Powershell
Get-Content test.txt | Set-Clipboard
Get-Clipboard | Out-File pasted.txt -Encoding utf8

# macOS
cat test.py | pbcopy
pbpaste > pasted.txt
# pdpaste는 기본으로 utf8출력이라 iconv불필요.
# 만약 필요하다면 다음 참고
pbpaste | iconv -f utf-8 -t utf-8 > pasted.txt 

# Linux
cat test.py | xclip -selection clipboard
# command | xclip -sel clip
xclip -o -selection clipboard > pasted.txt
# # 명시적 형변환 (보통 utf-9은 문제 없음)
# xclip -o -selection clipboard | iconv -f utf-8 -t utf-8 > pasted.txt
  • > 는 redirection 을 의미

2023.10.02 - [Linux] - [Bash] 입출력 목적지 변경하기 : Redirection Operation

 

[Bash] 입출력 목적지 변경하기 : Redirection Operation

stdout (표준출력, 1), sdtin(표준입력, 0), stderr(표준에러, 2)을 redirection하는 방법에 대한 문서서버에서 백그라운드로 명령어 수행시 출력이나 error 메시지 등을 stdout이 아닌 file에 남길 때 유용.redirec

ds31x.tistory.com

 

다음은 Python에서 clipboard를 사용하는 방식을 다룬 URL임:

2025.08.06 - [Python] - pyperclip-Python에서 clipboard사용하기


참고: Microsoft Win32 문서 기준:

  • CF_TEXT
    • ANSI 코드페이지 기반, 1바이트 문자
  • CF_UNICODETEXT
    • 16-bit Unicode text (UTF-16LE)

Powershell의 set-clipboard 를 사용하면 iconv가 필요없음.
Powershell은 내부적으로 UTF-16(.NET string)으로 처리함.

 

같이 보면 좋은 자료들

https://dsaint31.me/mkdocs_site/CE/ch01/code_for_character/

 

BME

Codes for Characters Code 란 특정 형태의 information을 다른 방법으로 표현하는 규칙 또는 해당 규칙으로 표현된 결과물 을 가리킴. 문자를 나타내기 위한 code는 인간이 사용하는 문자 를 일종의 기호 또

dsaint31.me

https://ds31x.tistory.com/272#batch-%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C-%EC%B6%9C%EB%A0%A5-%EC%97%AC%EB%B6%80-%EC%A7%80%EC%A0%95-echo-on-,-echo-off

 

[cmd] command prompt 연습하기 (file, dir 사용하기)

CMD 프롬프트 기초 튜토리얼: 파일 및 디렉토리 다루기1. CMD 프롬프트 열기Windows 키 + R을 눌러 실행 창을 엽니다.cmd를 입력하고 Enter를 누릅니다.기본적으로 현재 User의 home 디렉토리를 cwd (current wo

ds31x.tistory.com


 

728x90