UTF-8 콘솔에서 cp1251 텍스트 파일을 보는 방법은 무엇입니까?

UTF-8 콘솔에서 cp1251 텍스트 파일을 보는 방법은 무엇입니까?

1번을 시도해보세요:

$ less subs.srt
"subs.srt" may be a binary file.  See it anyway? 
<C8><F2><E0><EB><FC><FF><ED> ...

2번 시도:

$ LANG=ru_RU.CP1251 less subs.srt
����� �����, ��� ������.
��� ������� �������������! ...

해결책:

$ iconv -f cp1251 < subs.srt | less

어떻게 하면 더 쉽게 할 수 있나요?

답변1

less터미널과 다른 인코딩으로 실행 하려면 다음을 사용하십시오.루잇(X11 유틸리티 제품군과 함께 제공됨)

LANG=ru_RU.CP1251 luit less subs.srt

인코딩을 자동으로 감지하려는 경우 텍스트 파일에는 인코딩에 대한 표시가 없기 때문에 더 까다롭습니다. 소프트웨어엔카언어에 따라 파일의 인코딩을 식별해 보세요.

$ enca -L russian subs.srt
MS-Windows code page 1251
$ iconv -f "$(enca -iL russian subs.srt)" | less

LESSOPEN이 조합을 필터 로 사용할 수 있습니다 (참조:zless를 입력하지 않고 gzip 압축 파일을 less로 보는 방법은 무엇입니까?예를 들어). 그러나 이는 실제로 러시아어로 작성되지 않은 텍스트에 대해서는 좋은 결과를 제공하지 못할 수 있습니다.

UTF-8 및 CP1251만 사용하는 경우 파일을 전송할 때 CP1251로 대체할 수 있습니다.유효한 UTF-8이 아닙니다.— UTF-8에는 대부분의 8비트 인코딩 파일이 유효한 UTF-8이 되지 못하게 만드는 "구멍"이 있습니다. 개념 증명 필터 스크립트 ( 정확히 N 바이트를 읽어야 LESSOPEN하므로 Linux 이외의 시스템에서는 작동하지 않을 수 있음 ):head -c N

#!/bin/sh
head=$(head -c 1000)
if printf '%s\n' "$head" | grep -qav '^.*$'; then
  { printf '%s\n' "$head"; cat; } | iconv -f CP1251
else
  { printf '%s\n' "$head"; cat; }
fi

관련 정보