utf-8 bom 헤더구분 삭제하는 함수
utf-8 bom 표시 부분이 앞 3바이트에 있는것을 삭제해서 utf-8 으로 처리하기 위해서 필요한 함수 입니다.
이런것이 필요한 이유는 mb_convert_encoding 함수로 euc-kr로 변환을 하면 안되는것은 아니지만 ? 같은것이 발생합니다.
그렇기 때문에 아래 함수처럼 삭제하고 처리하면 문제 없이 잘 됩니다.
function remove_utf8_bom($text) {
if (substr($text, 0, 3) === "\xEF\xBB\xBF") {
return substr($text, 3);
}
return $text;
}
$ewy_utf8 = file_get_contents($ewyFile) or die("'$ewyFile' 파일을 찾을 수 없습니다.");
$ewy_utf8 = remove_utf8_bom($ewy_utf8);
$ewy_euckr = mb_convert_encoding($ewy_utf8, 'EUC-KR', 'UTF-8');
file_put_contents($ewyFile_euckr, $ewy_euckr);
음... 처음부터 utf-8 bom 하나만 있었으면 좋았을텐데....
● UTF-8 BOM(Byte Order Mark)
- UTF-8 BOM은 바이트 순서 EF BB BF (16진수)로 표현됩니다.
- 본래 BOM은 UTF-16이나 UTF-32와 같은 인코딩에서 바이트 순서(엔디안)를 나타내기 위해 사용되었습니다.
- UTF-8은 바이트 순서와 무관하게 작동하므로 기술적으로 BOM이 필요하지 않습니다.
- "UTF-8 with BOM"과 "UTF-8 without BOM"으로 구분하여 부르기도 합니다.