2012-11-24 2 views
3

파일의 인코딩에 문제가 있습니다. CentOS 서버에서 SSH를 통해 vim을 사용하여 만든 텍스트 파일입니다. 브라우저에서 파일을 볼 때 파일의 인코딩에 문제가 있습니다.브라우저의 텍스트 파일 표시 오류

나는이 동작을 설명하는 testfile 위, 생성 :

res.tobscore.com/test.txt

을 그리고 이것은 내가 출력이 사용 단지 html 파일입니다 (처럼하는 방법입니다 특수 문자가 올바르게 umlaute) 표시 :

: 터미널에서 명령 파일과 고양이를 사용하여

res.tobscore.com/test.html

하면 다음과 같은 결과를 발표

user>file test.txt 
test.txt: UTF-8 Unicode English text 
user>cat test.txt 
This is a testfile. I'm using the German Umlaute and the euro sign, to test 
the encoding. 
Euro - € 
Scharfes S - ß 
Ae - Ä 
Oe - Ö 
Ue - Ü 

UTF-8 유니 코드이므로 올바르게 표시됩니다. 내 브라우저 (Firefox 및 Chrome)에서 문제가 발생하는 이유가 무엇입니까? 내 태블릿 (독일어로 설정)을 기본 브라우저에서 확인하면 올바른 결과가 표시되지만 Chrome을 사용해 보면 동일한 끔찍한/잘못된 출력이 표시됩니다. 인코딩을 설정하는 방법이 있습니까? 따라서 모든 환경에서 인코딩을 표시하면 동일한 출력이 표시됩니까?

답변

3

서버는 .txt 파일을 Content-Type : text/plain으로 보낼 가능성이 높지만 문자 집합은 없습니다. 따라서 브라우저는 무언가 (ASCII, iso-8859-1 또는 iso-8859-15)를 선택해야하며 UTF-8 바이트를 가비지로 표시합니다. 브라우저에 TEST.TXT 변경되지 않은을의 내용을 덤프)

<?php 
header ('Content-Type: text/plain; charset=utf-8'); 
readfile ('test.txt'); 
?> 

에서 ReadFile (:

한 가지 해결 방법은 약간의 PHP 스크립트에서 텍스트 파일을 포장하고 그것으로 올바른 인코딩을 보내는 것입니다 .

확장자 (.txt)에 따라 Content-Type을 선택하는 웹 서버입니다. 당신은 아마도 그것을 바꿀 수 있지만 설정 파일을 깊이 파헤쳐 야합니다.

0

UTF-8 텍스트의 경우 브라우저는 사용되는 인코딩을 파악하는 데 어려움이 있으며 아마도 시스템의 인코딩을 기본값으로 사용합니다. 사용자는 인코딩을 수동으로 변경해야합니다 (예 : Firefox, 보기 > 문자 인코딩 > 유니 코드 (UTF-8) - 해결할 수없는 해결책).

이 문제를 해결하는 한 가지 방법은 오른쪽 Content-Type: text/plain; charset=utf-8 메타 데이터 (또는 JvO에서 제안한대로 PHP를 통해)로 텍스트를 보내도록 웹 서버를 구성하는 것입니다.

또는 검색하기 쉬운 인코딩으로 텍스트 파일을 다시 인코딩 할 수 있습니다 (예 : BOM이있는 UTF-16 (바이트 주문 기호). Vim에서 다음 파일을 통해 파일을 저장하십시오 :

:setlocal bomb 
:w ++enc=utf16-le 
관련 문제