Firefox에서 대체 인코딩을 UTF-8로 설정하는 방법은 무엇입니까?


12

노르웨이 마크 다운 문서를 작성했습니다.

$ file brukerveiledning.md
brukerveiledning.md: UTF-8 Unicode text

다음 markdown명령을 사용하여 HTML로 변환했습니다 .

$ markdown > brukerveiledning.html <  brukerveiledning.md 
$ file brukerveiledning.html 
brukerveiledning.html: UTF-8 Unicode text

그러나 Firefox는 "windows-1252"인코딩 을 사용하여 비 ASCII 문자를 손상시킵니다. 대체 텍스트 인코딩을 "현재 로캘의 기본값"(영국에서는 ISO-8859-1 또는 UTF-8이어야 함)에서 "Central European, ISO", "Central European, Microsoft로 변경하려고했습니다. "및"기타 (서유럽 포함) ". 이들 중 어느 것도 æ, ø 및 å를 표시 할 수 없습니다. 유니 코드 옵션이 없습니다. 또한 intl.fallbackCharsetList.ISO-8859-1about : config에서 운이없이 utf8,, utf-8등의 다양한 값으로 변경해 보았습니다 iso-8859-1.

markdown패키지 사용 :

$ pacman --query --owns "$(which markdown)"
/usr/bin/markdown is owned by markdown 1.0.1-6

이 로케일 :

$ locale 
LANG=en_GB.utf8
LC_CTYPE="en_GB.utf8"
LC_NUMERIC="en_GB.utf8"
LC_TIME="en_GB.utf8"
LC_COLLATE="en_GB.utf8"
LC_MONETARY="en_GB.utf8"
LC_MESSAGES="en_GB.utf8"
LC_PAPER="en_GB.utf8"
LC_NAME="en_GB.utf8"
LC_ADDRESS="en_GB.utf8"
LC_TELEPHONE="en_GB.utf8"
LC_MEASUREMENT="en_GB.utf8"
LC_IDENTIFICATION="en_GB.utf8"
LC_ALL=

나는 물어 시도 상기 해결책을 markdown명령 레벨하지만이 거부되었습니다.


Firefox 메뉴에서보기> 텍스트 인코딩> 유니 코드를 설정하는 것은 어떻습니까?
Paul Nordin

@PaulNordin 그것은 한 페이지에 대해 그것을 수행하는 좋은 방법입니다 (기본적으로 메뉴를 제거한 이후에도 메뉴가 존재하지 않았다는 것을 잊어 버렸습니다!). 그러나 이것이 기본값을 설정한다고 생각하지 않습니다.
l0b0

1
아, 그것은 단지 일시적입니다. 문제가 다른 곳일 수 있다고 생각합니다. Firefox는 헤더 나 메타를 사용하여 파일 형식을 결정합니다. 예를 들어, UTF-8 파일 test.html을 포함 åæâéè하고 firefox에서 열었습니다. 출력은 쓰레기였습니다 : åæâéè. 그러나 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />상단에 추가 하면 올바르게 출력됩니다. .md 파일에 대해 어떻게 수행할지 잘 모르겠습니다.
Paul Nordin

또한 파이어 폭스를 라우팅하여 뮤트에서 html 전자 메일을 볼 수 있도록이 작업을 수행하려고하지만 메타 파일이없는 utf-8은 html 파일로 생성됩니다.
pepper_chico

답변:


4

업데이트 : Firefox 66 이후 수정되었습니다.

파일에서로드 된 UTF-8 인코딩 HTML (및 일반 텍스트) 파일 : URL은 <meta charset="utf-8">UTF-8 BOM 없이 또는 UTF-8 BOM 없이 지원됩니다.

https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/66#HTML


2016 년의 역사 정보

이 동작의 이유는 Mozilla 버그 815551 (기본적으로 UTF-8 자동 감지) 및 1071816 (파일에서 BOM이없는 UTF-8 텍스트 / 일반 파일로드 지원 : URL)에 설명되어 있습니다.

내가 이해하는 한 기본적으로 " 감지가 너무 신뢰할 수 없으므로 항상 인코딩을 지정해야 합니다"로 요약됩니다 .

  • 로컬이 아닌 컨텐츠의 경우 프로토콜을 사용해야합니다. HTTP를 사용 charset하면 Content-Type헤더에 올바른 내용 을 제공합니다.
  • HTML 컨텐츠의 경우 추가로 Doctype을 사용할 수 있습니다. <meta charset="utf-8" />
  • 그리고 다른 방법으로는 BOM을 지정하는 것이 유일한 표준 방법입니다 ...

모질라 개발자 는 환경 설정을 추가 하는 패치위해 열려있는 것처럼 보이 므로 언젠가는 Firefox에서 로컬 BOM이없는 UTF-8 문서를 열 수 있습니다.


4

Firefox에서 대체 인코딩을 UTF-8로 설정하는 것은 의도적으로 차단되었습니다 (bugzilla.mozilla.org/show_bug.cgi?id=967981#c4 참조).

이 문제를 둘러 본 두 가지 방법은 다음과 같습니다.

1] 간단한 패치 를 소스에 적용 하고 Firefox를 직접 빌드 하여 환경 설정 | 내용 | 글꼴 및 색상 | 고급 | "폴더 백 텍스트 인코딩"드롭 다운 메뉴에 유니 코드 [UTF-8] 옵션을 추가하십시오.

2] 로컬 [Apache] httpd 서버를 실행하고 utfx디렉토리의 utf-8 인코딩 파일에 대해 이름 기반 가상 서버 를 설정하십시오 /my/utf-8/files. 그러면 utf-8 문자셋 http 헤더가 생성 될 수 있는데,이 헤더는 파일을 UTF-8로 인코딩하여 인식하고 표시합니다. 물론 실제 파일 인코딩은 UTF-8이어야합니다!

a) /etc/httpd/httpd.conf-추가 :

<VirtualHost *:80>
    # This first-listed virtual host is also the default for *:80
    ServerName localhost
    DocumentRoot "/srv/httpd/htdocs"
</VirtualHost>
<VirtualHost *:80>
    ServerName utfx
    DocumentRoot "/my/utf-8/files"
      <Directory "/my/utf-8/files">
          Options Indexes
          Require all granted
      </Directory>
## show UTF-8 characters in file names:
    IndexOptions Charset=UTF-8
## for files with extension html or txt:
    AddCharset UTF-8 txt html
## for extensionless files:
      <Files *>
          ForceType 'text/plain; charset=UTF-8'
      </Files>
      <Files *\.*>
          ForceType None
      </Files>
</VirtualHost>

(재) 서버를 시작 - apachectl restartapachectl graceful.

b) / etc / hosts-utf-8 인코딩 파일에 액세스하기위한 도메인 이름을 추가합니다 :

127.0.0.1   utfx

서버가 전송하는 컨텐츠 유형 정보는 wget -S <URL>을 사용하여 확인할 수 있습니다.

wget -S http://utfx/test{æø,.txt,.html} 2>&1 >/dev/null | grep Content-Type

세 가지 파일 형식 (testæø, test.txt, test.html)
출력은 다음과 같아야합니다.

내용 유형 : 텍스트 / 일반; charset = utf-8
내용 유형 : text / plain; charset = utf-8
내용 유형 : text / html; 문자 집합 = UTF-8

c) about : config-새로 추가 | 부울 :

browser.fixup.domainwhitelist.utfx  "true"

그런 다음 utfxFirefox 주소 표시 줄에 입력 하여 파일 목록을 얻습니다.


Bugzilla 링크의 경우 +1 솔루션은 불행히도 문제에 대해 지나치게 과잉입니다.
l0b0

3

귀하의 질문에 댓글을 달았 듯이 Mailcap을 통해 Firefox의 Mutt에서 부분 html (인코딩은 알려져 있지만 인코딩을위한 메타 태그는 없음)을 올바르게 표시하기 위해 동일한 내용을 얻는 데 어려움을 겪었습니다.

결국 나는 작동하고 당신에게도 도움이 될 수있는 명령을 알아 냈습니다.

  • uconv --add-signature -f %{charset} -t UTF-8 %s | sponge %s && firefox -new-tab %s & sleep 5

UTF-8로 인코딩 된 파일에 BOM이 포함되어 있으면 Firefox는 UTF-8이라고 가정합니다. 그래서 uconv명령을 사용 하여 BOM 서명을 추가했습니다. %{charset}이것이 입력 문자 세트이고 %s파일 이름 이라고 가정하십시오 . 이 sponge도구는 ( moreutils패키지에서) 파일을 변경하는 데 도움이 sleep되며 Firefox가 파일로드를 완료하기 전에 Mutt가 파일을 삭제하지 않도록합니다.

Firefox에서 대체 인코딩을 설정하는 다른 옵션을 찾지 못했습니다.


2

오프라인 파일에 대해서만 폴백을 UTF-8로 설정하는 것으로 충분 about:config하면 값을 intl.charset.fallback.utf8_for_file로 설정할 수 있습니다 true.

( 소스 )


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