내 CentOS 서버에는 체코어 특수 문자(예: á, é, č, ž)가 포함된 mysql 테이블의 덤프 파일이 있습니다. cat을 사용하여 파일을 볼 때 특수 문자가 손상되었습니다(예: á 대신 ĂĄ).
덤프에서 이러한 문자를 수정한 다음 데이터베이스로 다시 가져와야 합니다.
나는 몇 가지 다른 것을 시도했지만 다음을 포함하여 아무것도 작동하지 않습니다.
cat c_schools | sed 's/ĂĄ/á/g' > c_schools
sed를 사용하여 문자를 다음 표현식으로 대체했지만unterminated s command
오류가 발생했습니다.- VIM에서 파일을 열어서 수동으로 복구했는데 VIM에서 체크문자 입력이 안되네요,
- NANO에서 파일을 열어 수동으로 수정했는데 NANO에서 파일 작업이 전혀 안되는 것 같습니다(커서로 움직여도 텍스트가 바뀌네요).
의견에서 제안한 대로 VIM에서 파일을 다시 열고 다음 명령을 시도했습니다.
set encoding=utf-8
(전혀 효과가 없습니다.)set termencoding=iso8859-2
(이후 출력은 훨씬 좋아졌지만 č, ě 또는 š 대신 ?와 같은 일부 문자는 여전히 잘못 표시됩니다.):set fileencoding
(출력fileencoding=utf-8
)
FTP를 통해 Windows 컴퓨터에 파일을 복사하고 표준 텍스트 편집기(Notepad++)에서 열면 올바르게 표시되고 사용된 인코딩은 BOM이 없는 UTF-8입니다.
답변1
이는 ISO-8859-2로 표시된 유니코드(UTF-8) 데이터와 같습니다. 본질적으로 두 가지 가능성이 있습니다.
터미널은 출력 문자 집합으로 ISO-8859-2를 사용합니다. 그러면 데이터 자체는 올바르게 인코딩되지만 잘못 표시될 수 있습니다. ISO-8859-2와 같은 UTF-8 데이터를 표시할 때 예상되는 내용이 표시됩니다. UTF-8을 처리할 수 있는 터미널 및/또는 편집기를 사용해 보십시오. (나노에 대해서는 잘 모르겠지만 vim에 대해서는 잘 모르겠습니다.예를 사용하는 경우 UTF-8을 사용할 수 있습니다
set encoding=utf-8
. )터미널은 출력 문자 집합으로 UTF-8을 사용합니다. 그러면 데이터 자체가 올바르게 인코딩되지 않습니다. 이미 UTF-8 데이터임에도 불구하고 ISO-8859-2에서 UTF-8로 "변환"된 데이터입니다.
iconv
예recode
를 들어iconv -f UTF8 -t ISO_8859-2 yourinputfile
.
어떤 터미널 프로그램을 사용하고 있으며 출력은 무엇입니까 echo $LC_CTYPE
?