2017-02-10 4 views
2

CSV 파일에서 읽는 PHP 스크립트가 있습니다.이 파일은 UTF-8 형식이고 아래 코드는 ASCII로 취급합니다. 파일을 UTF-8로 읽도록 코드를 변경하려면 어떻게해야합니까? 내 현재 코드로 문제의PHP는 UTF-8을 읽습니다. CSV

if (($handle = fopen("books.csv", "r")) === FALSE) 
    throw new Exception("Couldn't open books.csv"); 
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 

[편집] 하나는 첫 번째 행의 첫 번째 값은 항상 처음에 추가 UTF-8 파일을 식별하는 3 바이트를 가지고 있다는 것입니다. 그래서 가치에 따라 가치가있는 행 또는 행별로 행하는 솔루션이 충분하지 않을 수도 있습니다.

+0

연구 교재 : 데이터 내 코드의 배열 인 http://stackoverflow.com/questions/279170/utf-8-all-the-way-through – wogsland

답변

0

fgets()를 사용하여 변수 $ date의 모든 문자열을 가져온 다음 mb_convert_encoding() 인코딩을 변환 한 다음 str_getcsv()를 사용하여 문자열을 배열로 변환합니다.

if (($handle = fopen("books.csv", "r")) === FALSE) 
    throw new Exception("Couldn't open books.csv"); 

$data = ""; 

// get file all strin in data 
while (!feof($handle)) { 
    $data .= fgets($handle, 5000); 
} 

// convert encoding 
$data = mb_convert_encoding($data, "UTF-8", "auto"); 

// str_getcsv 
$array = str_getcsv($data); 
+0

$에이를 적용 할 수있는 방법이있다 스트림 fgetcsv에서 사용하기 전에? – Bishoy

+0

죄송합니다. 잘못된 변수를 쓰고 기능을 변경합니다. –

+0

아직도 작동하지 :) 오류가 첫 번째 매개 변수는 문자열이어야한다고 말하고있다 – Bishoy