2012-03-23 6 views
1

나는 나는 "mb_detect_encoding"를 사용하여 문자열의 인코딩을 확인 PHP에서쓰기 유니 코드 문자 -

(중요하지 않습니다)를 DB에서 가져온 HTTP 포스트를 통해 또는 수신 유니 코드 문자열이 중복되지 결과로 UTF-8을 얻었습니다.

따라서 문자열은 유니 코드입니다.

하지만 PHP에서

$fd = fopen('myfile.php', "wb"); 
    fwrite($fd, $msg."\n"); 

내가있다 "à¤Ÿà ¥ ‡ à¤¸à ¥ ट"대신의 볼 무엇 적절한 인코딩과 출력 파일에 문자열을 쓰기 어떻게 실제 문자열은 입니다.

메모장 + +에 'junk'를 붙여 넣은 다음 메뉴 옵션 'encoding UTF-8'에 붙여 넣으면 올바른 텍스트가 표시됩니다.

편집 * 솔루션 질문을 게시하고 응답 자신을 파악하기위한 *

죄송합니다.

나는 당신이 mb_detect_encodingstrict 매개 변수를 지정해야 다음 사이트 http://www.codingforums.com/showthread.php?t=129270

function writeUTF8File($filename,$content) { 
     $f=fopen($filename,"w"); 
     # Now UTF-8 - Add byte order mark 
     fwrite($f, pack("CCC",0xef,0xbb,0xbf)); 
     fwrite($f,$content); 
     fclose($f); 
} 

답변

0

에서 해결책을 발견, 또는 당신은 많은 잘못된 반응을 얻을 것이다.

또한 출력이 UTF-8 일 수 있지만 올바른 헤더 (content-encoding) 및/또는 charset 메타 태그 (HTML 인 경우)를 지정해야합니다.

+0

출력은 PHP는 파일에서 해결책을 발견했다. PHP 파일의 헤더를 어떻게 지정합니까 ?? – Anand

+1

죄송합니다. 오해했습니다. 자신이 게시 한 솔루션에 대해서 : 바이트 순서 표시 (BOM)로 PHP 파일을 시작하면이 BOM은 PHP 파일을 포함 할 때 출력됩니다.이로 인해 생성 된 PHP 파일을 사용하여 렌더링 된 페이지의 시작 부분 (또는 중간 부분)에 원하지 않는 BOM이 출력 될 수 있습니다. – GolezTrol

2

PHP는 문자열의 인코딩을 변경하지 않으며 파일에 쓸 때 문자열의 인코딩을 변경하지 않습니다. 단순히 파일의 문자열에 문자열의 바이트를 덤프합니다 (PHP 문자열은 실제로는 바이트 배열입니다). 실제로 문자열을 UTF-8로 수신하고 파일에 쓰는 것을 제외하고는 아무 것도하지 않으면 파일 내용이 UTF-8로 인코딩됩니다. 문제는 대부분 응용 프로그램이 보기로 UTF-8로 인코딩 된 파일을 제대로 읽지 못하는 것입니다.


해당 BOM 솔루션이 반드시 최고 일 필요는 없습니다. UTF-8에는 BOM이 필요하지 않으며 많은 애플리케이션에 문제가 있습니다. 그렇지 않으면 (너무 어리 석음) 파일이 UTF-8로 인코딩되었음을 감지 할 수없는 응용 프로그램 만 지원합니다. 더 나은 해결책은 문제의 응용 프로그램에 파일을 열 때 UTF-8로 인코딩 된 파일을 처리해야한다는 것을 명시 적으로 알리는 것일 수 있습니다. 또는 더 나은 응용 프로그램을 사용하십시오.

0

죄송합니다. 질문을 올리고 답변을 직접 찾아보십시오.

나는 다음 사이트 here

function writeUTF8File($filename,$content) { 
     $f=fopen($filename,"w"); 
     # Now UTF-8 - Add byte order mark 
     fwrite($f, pack("CCC",0xef,0xbb,0xbf)); 
     fwrite($f,$content); 
     fclose($f); 
} 
+0

"UTF-8 BOM"은 가짜입니다. UTF-8에 대해 표시 할 바이트 순서가 없습니다. 불행하게도 Microsoft Land의 많은 도구는 기본적으로 UTF-8 출력의 가짜 BOM을 포함하고 다른 경우 UTF-8 입력을 읽지 못하는 경우가 있습니다. 원본 파일이 이미 유효하고 올바른 UTF-8이었습니다. Notepad ++가 파일을 UTF-8로 인식하지 않을 경우 해당 설정을 변경해야합니다. – bobince