유니 코드 UTF-8을 유니 코드로 표시하는 방법?


12

Emacs에 이상한 이스케이프 코드를 표시하는 UTF-8로 인코딩 된 텍스트 파일이 있습니다. 예를 들어이 텍스트는 다음과 같습니다.

ista quaestione primo exponam quid intelligendum est in hoc nomen 'Deus'; secundo, respondebo ad quaestionem.

Emacs에서 다음과 같이 표시됩니다.

여기에 이미지 설명을 입력하십시오

이것은 Emacs에서만 발생합니다. 다른 편집자는 텍스트를 올바르게 표시합니다. 이 문제를 어떻게 해결할 수 있습니까?


업데이트 1

전화를 걸어 파일을 revert-buffer-with-coding-system선택 utf-8하면 올바르게 읽 힙니다. 따라서 Gilles가 올바르게 추측 한 것처럼 Emacs는 파일 인코딩을 감지하지 못합니다. ; -*- coding: utf-8 -*-파일에 코드 를 추가하면 Emacs가 열리고 올바르게 표시됩니다.


업데이트 2

파일을 "UTF-8 with BOM encoding"으로 다시 인코딩하면 이제 Emacs에 올바르게 표시됩니다. 두 유형의 차이점이 무엇인지 모르지만 Emacs는 BOM을 사용한 유형 만 알고있는 것 같습니다.


Emacs는 파일을 UTF-8로 인식하지 않습니다. init 파일의 내용은 무엇입니까? 어떤 버전의 이맥스를 사용하고 있습니까? emacs -q또는로 Emacs를 시작하면 변경됩니까 emacs -Q?
Gilles 'SO- 악마 그만

다른 UTF-8 파일에는 문제가 없습니다. GNU Emacs 24.4.4를 실행하고 있습니다. 와 차이 없음 emacs -qemacs -Q.
NVaughan

아, 다른 파일과 함께 작동하고 깨끗한 구성이라면 파일에 잘못된 UTF-8이 포함되어 있기 때문일 수 있습니다. 이맥스와 대화하는 법을 보도록하겠습니다.
Gilles 'SO-Stop

답변:


10

어떤 이유로 Emacs는 파일을 UTF-8로 인식하지 않습니다. 명령 C-x RET r( revert-buffer-with-coding-system) 을 실행하고을 입력하여 Emacs가 파일을 UTF-8로 다시 열도록 할 수 있습니다 utf-8.

Emacs가이 파일을 UTF-8로 인식하지 못하지만 다른 파일을 인식하는 이유는 파일에 잘못된 UTF-8 시퀀스가 ​​포함되어 있기 때문입니다. 이 시퀀스는 escape-glyph파일을 UTF-8로 재 해석 한 후에도 여전히 백 슬래시 다음에 다른 색상 ( 얼굴)을 가진 3 개의 8 진수로 표시됩니다 . C-M-s( isearch-regexp) 을 실행 하고 찾아서 이러한 시퀀스를 검색 할 수 있습니다.

[^^@-~[:multibyte:]]

여기 ^@에 입력하여 입력합니다 C-q C-SPC(두 문자 시퀀스 circumflex-at가 아닌 ^ @ = 0 문자이며 그 앞의 문자는 circumflex 문자 임).

당신은 추가하여 UTF-8로 파일을 인식하는 이맥스를 강제 코딩 시스템 파일 변수를 : 넣어 같은 -*-coding: utf-8-*-이 같은 첫 번째 줄에, 또는 넣어 뭔가를 파일의 끝 부분 (당신은 대체 할 수 #있는 접두사,하지만 Local Variables:End:필수 후행 콜론과 함께 다음과 같이 정확하게 나타납니다).

# Local Variables:
# coding: utf-8
# End:

Emacs 는 몇 가지 설정, 주로 언어 환경 및 변수 및 에 따라 해석되는 파일에 따라 인코딩을 선택합니다 . 을 실행할 때도이 파일에 동일한 문제 가 있으므로이 설정은 문제가 아니라 파일 내용과 관련이 있다고 생각합니다.auto-coding-alistauto-coding-regexp-alistemacs -Q


나는 코딩 시스템 파일 변수없이 파일을 열 경우 (파일 잘못 표시 즉 경우) 및 정규식 검색을 실행, 내 모든 \342, \200, \230, 등을 선택하세요. 그러나 코딩 변수를 사용하여 "올바로"열면 검색 결과가 나타나지 않습니다.
NVaughan

@NVaughan 흠. 그런 다음 다른 사람들이 (특히 아래에있을 때)이 파일이 UTF-8로 인식되지 않는 이유를 이해하지 못합니다 emacs -Q.
Gilles 'SO- 악마 그만해'

1

BOM에 관한 질문에 답하기에는 늦었지만 어쨌든 할 것입니다.

바이트 순서 표시 (BOM)는 파일의 시작 부분에 내용이 UTF-8로 인코딩되어 있음을 시스템 및 응용 프로그램에 나타내는 3 바이트 \ xef \ xbb \ xbf의 시퀀스입니다. 올바르게 메타 데이터이며 내용의 일부로 취급되지 않습니다.

대부분의 응용 프로그램 인 Emacs는 BOM 중 하나이며 모든 UTF-8 파일을 작성합니다. 다른 응용 프로그램에서는 읽기에 적합하지만 쓸 수는 없습니다. 다른 사람들은 그것에 대해 알지 못하며 오류가 발생하면 오류 메시지를 표시 할 수 있습니다. 다시 말해서 상황이 지저분합니다. 가능한 한 사용하는 것을 선호합니다.


-1

UNIX와 유사한 시스템에만 해당됩니다.

대부분의 경우 ~ / .bashrc ~ / bash_profile의 간단한 인코딩 정의

LANG=en_EN.UTF8

와 달성

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8

~ / .profile에서 문제를 해결해야합니다.

추신이 수정 후에는 변경 사항을 볼 수 있도록 세션에서 다시 로그인해야합니다.


당신이 말하는 것이 유용 할 수도 있지만, 문제는 일부 utf-8 파일 에만 있었기 때문에이 질문에 대답하지 않는 것 같습니다 .
JeanPierre

구성 파일에서 엄격한 인코딩 정의 후에이 문제가 모든 파일에 대해 영원히 사라진다고 가정 해 봅시다. :-)
Alioth
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.