- 다양한 소스(웹 페이지, 기타 텍스트 파일, PDF 파일)의 다양한 부분을 gedit에 복사하고 파일에 저장하여 텍스트 파일을 만들었습니다. 이것이 텍스트 파일에 여러 인코딩이 있는 이유인 것 같지만 확실하지 않습니다. 서로 다른 소스의 서로 다른 부분을 gedit로 복사하여 혼합 인코딩이 포함된 텍스트 파일 생성을 방지하려면 어떻게 해야 합니까?
gedit에서 파일을 열 때마다 gedit는 항상 텍스트의 모든 부분을 올바르게 표시하거나 디코딩할 수 있습니다. gedit가 혼합 인코딩으로 텍스트 파일을 처리할 수 있는 것 같지만 확실하지 않습니다.
하지만 emacs에서 파일을 열면 올바르게 표시되지 않는 문자가 있을 것입니다. (Emacs가 왜 그렇게 할 수 없는지 잘 모르겠습니다.) 그래서 파일을 혼합 인코딩에서 utf-8과 같은 단일 인코딩으로 변환하고 싶습니다.
나는 gedit가 텍스트 파일의 다른 부분에 대한 올바른 인코딩을 감지할 수 있다고 생각하고 그렇게 할 수 있는 다른 응용 프로그램이 있는지 모르기 때문에 gedit에 파일을 utf-8로 변환하도록 요청할 수 있습니까? 적어도 파일의 어느 부분에서 어떤 인코딩을 찾는지 알려주세요.
감사해요.
답변1
흠... 솔직히 말해서 다양한 인코딩을 가진 파일의 개념은 다소 불안정합니다. 시간이 좀 있으면,이 기사(그리고이 하나) 읽어볼 가치가 있습니다.
Linux의 경우 파일은 일련의 바이트입니다. 프로그램에 텍스트 파일로 해석하도록 요청하면 바이트와 문자 간의 매핑을 사용하여 해석합니다. 이 매핑은 인코딩입니다. 내가 아는 거의 모든 텍스트 편집기(워드 프로세서는 아님!)는 하나의 파일에 대해 하나의 인코딩 개념만 이해합니다.
나는 전문가가 아닙니다 gedit
. 어쩌면 인코딩을 한 줄씩 자동 감지하거나 텍스트 블록별로 텍스트 블록을 자동 감지하는 것과 같은 마법을 부리고 있는 것일 수도 있습니다. 그렇다면 다음을 사용하여 동일한 작업을 시도할 수 있습니다.enca
(1):
while read line; do echo $line | enconv -L none -x utf8; done < text.mixed > text.utf8
...하지만 인코딩을 추측하는 데 enca가 얼마나 좋은지에 따라 다릅니다(예를 들어 동유럽에서는 거의 잘 작동하지만 Latin1에서는 작동하지 않음).
(1) 저장소에 있으므로 sudo apt-get enca
.
답변2
저도 같은 문제가 있었는데 Emacs로 해결했습니다. 솔루션은 다음에서 인용됩니다.여기:
또 다른 가능한 해결책은 나타나는 각 지역을 한자로 표시하고 Mx recode-region으로 다시 코딩하여 "텍스트가 실제로 있음"을 utf-16-le로 제공하고 "그러나 다음으로 해석됨"을 utf-16-be로 제공하는 것입니다.
또 다른 방법은 인코딩이 다른 두 부분을 분할하여 다른 파일로 복사하고, 한 부분의 인코딩을 변환하고 다른 부분에 추가하는 것입니다. 제 경우에는 Atom에서는 작동했지만 Notepad++(utf16-le/be)에서는 작동하지 않았습니다.