저는 Linuxverse를 처음 접했기 때문에 표준적인 질문을 드리는 것인지 이해해 주시기 바랍니다.
방금 다음 링크를 사용하여 zip 파일을 다운로드했습니다.https://io.genesis-ark.club/common/20240401/삼국지 명장들의 기록(2).zip
처음 다운로드를 이용했을 때, wget "https://io.genesis-ark.club/common/20240401/三国名将录(2).zip"
다운로드가 완료된 후 오류가 나서 그냥 재다운로드를 이용했습니다. 하지만 zip을 추출하려고 하면 다음과 같이 이상한 결과가 나타납니다.???????.zip
wget "https://io.genesis-ark.club/common/20240401/三国名将录(2).zip" -O mydownload.zip
그래서 세부 정보가 포함된 zip 파일을 얻는 방법을 찾으려고 노력 중입니다. 인터넷 검색 중에 찾았는데 zipinfo mydownload.zip
출력이 나에게도 이상해 보입니다.
비표준 프로그램(rar, zip, 7z 등)을 사용한 압축으로 인해 발생하는 경우도 있나요? 어떻게 해결할 수 있나요? 7zip을 사용해 보았 unzip -a
으나 아무 것도 작동하지 않았습니다.
참고: 저는 Centos 7.0을 사용하고 있습니다.
의견을 바탕으로 한 추가 정보:
출력 locale charmap
:
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
ANSI_X3.4-1968
출력 locale
:
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
답변1
로케일의 문자 인코딩은 미국식( ASCII 및 ANSI) 영어 ANSI_X3.4-1968
와 128개의 고유한 문자만 포함하는 문자 세트인 ASCII의 또 다른 이름 입니다.A
중국 특유의 느낌이 전혀 없습니다.
LC_CTYPE
환경 변수가 로 설정되어 있지만 CentOS 시스템에서는 유효한 로케일 이름이 아니기 UTF-8
때문에 이러한 로케일을 가져오는 것입니다 ( 지원되는 로케일 목록은 의 UTF-8
출력 참조 ). locale -a
Apple macos(이전의 macOS, OS/X, MacOS/X 또는 Apple 마케팅 팀에서 언젠가 부르기를 좋아하는 이름)는 예외로 알려진 소수의 시스템에서 유효한 로케일입니다.
로캘 범주가 다음과 같은 경우를 LC_CTYPE
다룹니다 .문자 인코딩무엇보다도 찾을 수 없으며 C
대부분의 시스템(CentOS 포함)의 로캘이 기본값이며 charmap은 ASCII입니다.
출력에는 환경 변수가 로 설정된 locale
것으로 표시됩니다 .LANG
en_US.UTF-8
이것은 시스템에서 유효한 로케일입니다. 이 LC_CTYPE
로케일은 가짜이므로 설정하지 않은 채로 두어야 합니다. 따라서 이 로케일은 LC_*
파생된 다른 범주 $LANG
와 마찬가지로 en_US.UTF-8
유니코드 인코딩인 UTF-8 문자 맵을 갖습니다. 알려진 모든 기존 문자를 포함합니다. .
다음을 수행하여 셸 환경에서 로컬로 이 문제를 해결할 수 있습니다.
unset -v LC_CTYPE
(POSIX와 유사한 쉘을 가정)
그러면 다음과 같은 출력이 표시됩니다 locale
.
LC_CTYPE="en_US.UTF-8"
(큰따옴표는 값이미루다$LANG
, 여기서는 설정되지 않음 에서 비롯됨 $LC_ALL
)
문제를 보다 영구적으로 해결하려면 해당 환경 변수를 설정하는 것이 무엇인지 파악해야 합니다.
ssh
한 가지 가능성은 Macos 시스템에서 해당 CentOS 시스템에 로그인했으며 Macos 시스템의 환경에는 LC_CTYPE=UTF-8
(작동하는 대로) 포함되어 있으며 ssh
일반적으로 지역화된 변수를 서버 1에 전달하도록 구성되어 있으며 결국 서버 1에 전파됩니다. CentOS 시스템의 원격 셸 세션.
이 경우, macos에게 변수 전송을 중지하라고 지시하거나 LC_CTYPE
, macos에만 국한되지 않고 다른 시스템으로 이식 가능한 값을 보내야 합니다. 예를 들어 다음을 추가할 수 있습니다.
SetEnv LC_CTYPE=en_US.UTF-8
~/.ssh/config
이 변수의 특정 값을 보냅니다 . Macos가 아닌 시스템에 가짜 환경 변수 값을 보내는 것은 명백히 $LC_CTYPE
번거롭기 ssh_config
때문에 이를 Apple 문제로 제기할 수도 있습니다. .
다음과 같이 할 수도 있습니다.
env -u LC_CTYPE ssh centos-machine
바꾸다:
ssh centos-machine
LC_CTYPE
환경 변수가 ssh
원격 셸로 전달되지 않았는지 확인하세요 .
¹ 일반적으로 SendEnv LANG LC_*
클라이언트 및 AcceptEnv LANG LC_*
서버 측 의 일부 구성 지침을 통해