2010-07-15 5 views
0

문자로 직접 입력 할 때 입력이 제대로 이루어 지지만 입력 된 형식을 "FILE"로 변경 한 다음 서버에 저장된 임시 내용을 읽으면 추가 문자가 추가됩니다. "알 수 없음"문자가 임시 파일을 읽을 때 추가되었습니다.

$fileName = $_FILES['userfile']['name']; 
$tmpName = $_FILES['userfile']['tmp_name']; 
$fileSize = $_FILES['userfile']['size']; 
$fileType = $_FILES['userfile']['type']; 

$fp = fopen($tmpName, 'r'); 
$content = fread($fp, $fileSize); 
fclose($fp); 

echo $content; 

가장 많이하는 것은 아마도 secuirty와 관련이 있지만 콘텐츠를 변경하여 정상적으로 읽습니까? 파이어 폭스에서는이 문자 대부분의 문자를 사각형 상자와 함께 제공 :

가 그 말을 의미 : 다음은 예입니다 "더러운 로커"대신 다음과 같이 나온다 : "먼지 y ""

희망을 도울 수 있습니다.

+0

이 예에서는 어떤 파일을 업로드하고 있습니까? 편집을 위해 어떤 프로그램을 사용 했습니까? –

+1

이것은 분명히 인코딩 문제입니다. Firefox로 전송 된 데이터는 아마도 UTF-16이지만 Firefox는이를 1 바이트 인코딩 (아마도 UTF-8)으로 해석합니다. – Thomas

답변

1

데이터 형식을 multipart/form-data 형식으로 설정하십시오. 헤더와 메타 태그를 통해 출력 페이지의 인코딩을 utf-8로 설정합니다.

업로드 된 파일의 실제 내용을 확인하십시오. 원본 파일과 해당 복사본을 서버에 저장하십시오. 수동으로 파일을 업로드하고 (예를 들어 ftp), PHP로 읽으십시오.

+0

브라우저에서 제대로 표시되기 위해 문제가 발견되었습니다. 파일을 UICP-8로 저장할 필요가 있습니다. UNICODE로 저장된 순간에 파일을 변환하는 방법이 있습니다. 사용자가 직접 UTF-8을 사용하지 않아도됩니까? –

+0

mb_convert_encoding은 파일을 변환 할 수 있지만 "AUTO"를 사용하면 슬프게도 지정된 문자를 찾을 수 없습니다. –

관련 문제