8 진 시퀀스를 UTF-8 텍스트로 변경하는 방법


9

Windows에서 ASCII가 아닌 텍스트를 복사하여 Emacs에 붙여 넣으면 8 진 시퀀스로 표시됩니다. 예를 들어, ä를 Emacs에 붙여 넣으면 \ 344로 표시됩니다.

Cq 344를 입력하여 Emacs로 ä를 다시 가져올 수 있습니다. 성가신 일이지만 캐릭터가 하나만 있으면 참을 수 있습니다. 그러나 8 진 이스케이프 시퀀스로 변환 된 문자가 많으면 영역에서 일부 명령을 실행하여 내부의 모든 항목을 변환하는 것이 편리합니다. 이미 그런 명령이 있습니까? 그렇지 않다면 어떻게 함수를 작성 하시겠습니까?

[저는 .emacs 파일에서 기본 코딩 시스템을 utf-8로 설정했으며 Windows 및 Linux에서 동일한 .emacs 파일을 사용합니다. 그러나 문제는 Windows 응용 프로그램에서 Emacs로 복사 할 때만 발생합니다. Emacs에서 다른 Windows 응용 프로그램으로 복사하는 것이 좋습니다.]


1
나는 당신이 원하는 것이 revert-buffer-with-coding-system(문서를 참조하십시오) 생각합니다 . Emacs는 다른 코딩 시스템에있는 환경에서 문자를 복사 했으므로 (이는 라틴어를 분음 부호로 렌더링하는 데 사용되는 높은 ASCII 문자로 ANSI를 가정 할 때) 문자를 이러한 방식으로 표시하지만 버퍼는 UTF-8과 같은 것을 사용해야합니다. 높은 비트가 설정된 ASCII 문자는 의미가 없습니다. 즉 유효하지 않습니다.
wvxvw

1
아니면조차도 set-clipboard-coding-system. 보십시오 C-h a coding-system이 그룹의 다른 기능을 사용할 수 있는지 확인합니다.
wvxvw

표시되는 \ 344는 구성 문제의 결과입니다. 사실 이후에 "수정"하라는 명령 대신, 왜 처음에 그것을 얻었는지 조사해야합니다. 예를 들어 시작하고 emacs -Q이미 문제가있는 경우 M-x report-emacs-bug.
Stefan

@Stefan 때때로, "왜 그것을 얻 느냐"는 명백하지만, 사실 후에 그것을 고치는 데 도움이되지 않습니다. 예를 들어 방금이 문제가 발생 insert-file-literally했습니다 (그리고 파일을 실행 취소하거나 삭제 / 다시 삽입하기에는 너무 늦었습니다).
T. Verron

@Stefan Emacs 외부에 너무 많은 잘못된 구성이있을 수 있습니다. 소스 편집기는 클립 보드 등의 컨텐츠 유형을 잘못보고했습니다. 원래 잘못 인코딩 된 일부 고대 ASP 소스를 편집 할 때 이것을 많이 사용했습니다.
wvxvw

답변:


4

내 .emacs 파일의 문제가있는 부분이 밝혀졌습니다 (set-selection-coding-system 'utf-8). 해당 라인을 제거하면 Emacs가 예상대로 동작합니다.


2

일단 이것을 만든 :

(defun umlaute ()
  "Fix wrongly inserted characters, commonly from pasting. "
  (interactive "*")
  (save-excursion
    (goto-char (point-min))
    (while (re-search-forward (concat "\\\344\\|"(list 228)) nil 1)
      (replace-match "ä"))
    (goto-char (point-min))
    (while (re-search-forward (concat "\\\304\\|"(list 196)) nil t 1)
      (replace-match "Ä"))
    (goto-char (point-min))
    (while (re-search-forward (concat "\\\366\\|"(list 246)) nil t 1)
      (replace-match "ö"))
    (goto-char (point-min))
    (while (re-search-forward (concat "\\\326\\|"(list 214)) nil t 1)
      (replace-match "Ö"))
    (goto-char (point-min))
    (while (re-search-forward (concat "\\\374\\|"(list 252)) nil t 1)
      (replace-match "ü"))
    (goto-char (point-min))
    (while (re-search-forward (concat "\\\334\\|"(list 220)) nil t 1)
      (replace-match "Ü"))
    (goto-char (point-min))
    (while (re-search-forward (concat "\\\337\\|"(list 223)) nil t 1)
      (replace-match "ß"))
    (goto-char (point-min))
    (while (re-search-forward "\\\201" nil t 1)
      (replace-match ""))))

https://launchpad.net/sx-emacs-werkstatt의 misc-utils.el에서

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.