2012-09-26 4 views
2

XBF \ XEF \ xBB \에 BOM 설정과 함께 'utf8_encode'PHP : 사용 (또는하지 않음) 다음 코드를 사용하는 경우

$myString = 'some contents';  
$fh=fopen('newfile.txt',"w"); 
fwrite($fh, "\xEF\xBB\xBF" . $myString); 

을 먼저를 인코딩하는 PHP 함수를 사용하는 모든 지점이 있나요 텍스트 (예에서 $ myString) 예 utf8_encode($myString); 또는 유사한 iconv() 명령을 실행하고 싶습니까?

BOM \xEF\xBB\xBF이 파일에 처음 입력되고 UTF8이 사실상 세계의 모든 문자를 나타내는 것으로 가정하면이 방법으로 파일을 만드는 잠재적 인 실패 시나리오가 표시되지 않습니다. 즉, 주요 텍스트 편집기가 새로 작성된 파일을 핵심적으로 해석하여 모든 문자를 의도 한대로 표시 할 수없는 경우는 없습니다. 이 경우에도 $myString은 HTML 양식의 PHP $_POST 변수가됩니다. 내가 맞습니까?

답변

1

소스 파일이 UTF-8 인 경우 $myString 문자열도 UTF-8으로 인코딩되어 있으므로 변환 할 필요가 없습니다. 그렇지 않으면 iconv()을 사용하여 먼저 파일로 변환하기 전에 인코딩을 변환해야합니다.

그리고 utf8_encode()은 ISO-8859-1 문자열을 UTF-8로 인코딩하는 데 사용됩니다.

+0

당신은 소스 '가 무엇을 의미합니까 파일 '이이 문맥에서? – Matte

+0

소스 코드의 인코딩. – xdazz

0

utf8_encodeISO-8859-1 인코딩 된 문자열 만 변환합니다.

일반적으로 PHP는 256 char 문자 집합 만 지원하므로 UTF-8로 작성하기 전에 ASCII가 아닌 문자가 포함 된 문자열을 utf-8로 인코딩해야합니다.

BOM은 선택 사항입니다. 대부분의 텍스트 파일 판독기가 파일 인코딩을 검사합니다. Wikipedia

유니 코드 표준에서

이 UTF-8의 BOM을 허용, [2]하지만 가 필요하거나 또는 그 사용에 대한 권장하지 않습니다

관련 문제