파일 이름은 "ls"인 경우 ? 문자로 표시되고 "ls | grep Fran `?"인 경우에는 가비지 문자로 표시됩니다.

파일 이름은 "ls"인 경우 ? 문자로 표시되고 "ls | grep Fran `?"인 경우에는 가비지 문자로 표시됩니다.

인식할 수 없는 문자가 있는 파일 이름을 다른 문자로 바꾸는 방법을 정의하는 구성은 무엇입니까? 예를 들어 내 Linux 시스템에서는 PuTTY의 UTF8 환경 설정에서 동일한 파일이 다르게 나타납니다.

$ ls | grep fran
fran▒aise

$ ls
fran?aise

fran▒aise-> 인코딩된 바이트는 다음과 같습니다.fran\xe2\x96\x92aise

시스템이 라틴어로 인코딩된 \xe7바이트를 이해하지 못하기 때문에 이 모든 작업을 수행하는 것 같습니다.

또한 기본적으로 다른 NFS 마운트인 다른 폴더에 복사하면 다른 이름이 표시됩니다: fran栩se.

이러한 모든 암시적 변경을 수행하는 구성을 어떻게 확인할 수 있습니까?

locale:
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

답변1

제가 사용하는 퍼티에는

구성->Windows->번역->원격 문자 집합: UTF-8

리눅스에서

LANG=en_US.UTF-8

모든 것이 정상입니다

Linux > echo élève > française
Linux > od -c française
0000000 303 251   l 303 250   v   e  \n
0000010
Linux > ls | od -c
0000000   f   r   a   n 303 247   a   i   s   e  \n
0000013
Linux > ls
française

그리고 완료stty

Linux > stty -a
speed 38400 baud; rows 40; columns 129; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc

Windows에서 Linux로 scp를 실행하면 다음과 같은 파일이 생성됩니다.vérification.xml

도스에서

vÚrification.xml          | 99 kB |  99.9 kB/s | ETA: 00:00:00 | 100%

리눅스에서

Linux > LANG=C.utf8 ls
fran??aise  v?rification.xml
Linux > LANG=POSIX ls
fran??aise  v?rification.xml
Linux > LANG=french ls
française  v▒rification.xml
Linux > LANG=fr_FR.iso88591 ls
française  v▒rification.xml
Linux > LANG=fr_FR.utf8 ls
française  v?rification.xml

관련 정보