반응형
PHP - 파일 타입에 따라 인코딩 변환하기(utf-8/euc-kr) - file encoding 체크(파악)하기
function fopen_utf8 ($filename, $mode) {
$file = @fopen($filename, $mode);
$bom = fread($file, 3);
if ($bom != b"\xEF\xBB\xBF"){
rewind($file, 0);
$utype = "euckr";
} else {
echo "bom found!\n";
$utype = "utf8";
}
Return $utype;
}
$ftype = fopen_utf8($filename,"r");
if($handle = fopen($filename, "r")) { // 3/
$i = 0;
while ($html_res = fgetcsv($handle, 5120000, ",")) {
$html_cnt = count($html_res);
for ($j = 0; $j < $html_cnt; $j++) {
$info[$j] = str_replace(">", ">", $html_res[$j]);
$info[$j] = nl2br(str_replace("<", "<", $info[$j]));
}
for($ii=0; $ii<50; $ii++) {
if($ftype=='utf8') {
echo "$ii>".iconv("utf-8","euc-kr",$info[$ii])." ^ ";
} else {
echo"$ii>$info[$ii] ^ ";
}
}
echo"<br><br>";
}
}
fgetcsv를 이용해 csv 파일을 변환하려고 하는데 파일인코딩이 utf-8이 넘어오는 경우도 있고 euc-kr 이 넘어오는 경우가 있다.
작업하는 서버환경이 euc-kr 환경이라 euc-kr로 바꿔서 처리해야 문제가 없다.
다른 여러가지 방법으로 테스트 해봤는데 위에 적어진 방법이 그나마 오류없이 처리가 된다.
원본은 https://stackoverrun.com/ko/q/279063 여기에서 참고했다.
# 정리
1. PHP fgetcsv로 파일읽기
2. PHP fopen 으로 읽은 파일이 utf-8이면 euc-kr 로 iconv를 이용해 인코딩해서 사용.
3. euc-kr 타입이면 iconv 없이 바로 진행.
# 서버환경이 utf-8 환경이면 반대로 적용해도 된다.
반응형
'Program > PHP' 카테고리의 다른 글
[PHP]특정일로부터 며칠인지 계산하기 (1) | 2020.10.14 |
---|---|
mysql order by case 이용하기 (0) | 2020.08.25 |
우체국 계약택배 택배접수 API 연동 - PHP (0) | 2020.05.29 |
[PHP]배열 중복제거 - array_unique(); (0) | 2020.05.20 |
PHP array_multisort - PHP 다중배열 소팅하기 (0) | 2020.04.17 |
댓글