2014-01-28 1 views
0

enter image description here 나는이 PHP 함수가 : 나는 서버로 이름을 바꾼 파일을 업로드 할 때는 cyrilic 파일 이름 깨진

function upload_file($f,$fn){ 
switch($f['type']){ 
case 'image/jpeg':$image = imagecreatefromjpeg($f['tmp_name']);break; 
case 'image/png':case 'image/x-png':move_uploaded_file($f['tmp_name'],'../images/pc/'.$fn.'.png');break; 
case 'image/pjpeg':$image = imagecreatefromjpeg($f['tmp_name']);break; 
echo $f['type'],'<br />'; 
} 
if(!empty($image)) imagejpeg($image,'../images/pc/'.$fn.'.png'); 
}  

$의 FN = "нова-категория는" 하지만 - 이미지 이름이 고장을 그리고 다음과 같습니다 РЅРѕРІР ° -РєР ° С,РμРіРѕСЂРёСЏ.png

흥미로운 것은이를 그 나는 서버에있는 이미지를 방문하려고하면 : site.com/images/pc/нова-категория.png => 나는 이미지를 볼 수있다. .. 당신은 나에게 이미지 이름을 제동하는 아이디어를 줄 수 있냐? 정상으로 보이시겠습니까? 미리 감사드립니다.

+0

안녕하세요, 귀하의 문제를 해결하지 못해 답변을 삭제하지 않기 때문에 응답이없는 게시물이 더 많은 가시성을 갖습니다. 나는 여전히 실을 모니터링하고 있으며'@ Matt'을 통해 나를 알리는 한 계속해서 당신을 도울 것입니다. – Matt

답변

0
  1. ftp 클라이언트에서 ftp를 탐색 할 때 ANSI 인코딩 이름 (1 바이트 인코딩)이 표시됩니다. 이 경우 РЅРѕРІР°-категория.png에서는-8 UTF, 웹 서버에 파일을 업로드 브라우저에 파일 이름에서 비 유니 코드 문자를 변환 할 때 UTF-8 (더블 바이트)

  2. нова-категория.png 인코딩 실제로 (нова-категория.pngРЅРѕРІР°-категория.png된다)

  3. site.com/images/pc/нова-категория.png 브라우저를 다시 요청하면 유니 코드가 아닌 기호가 UTF-8로 변환되고 서버는 실제로 РЅРѕРІР°-категория.png (ASCI 인코딩)을 찾습니다. 당신은 FTP 클라이언트에서 "정상"이름을보고 싶다면

그래서, 당신은 당신의 기본 인코딩

function upload_file($f,$fn){ 
$fn=iconv("UTF-8","Windows-1251",$fn); 
switch($f['type']){ 
... 

로 변환해야하지만,이 경우에 URL에 문제가있는 것입니다 당신의 파일. 그 파일의 사용에 당신이 파일 이름을 처리해야하는 방법입니다

echo "site.com/images/pc/".rawurlencode("нова-категория.txt"); 

가 따라 달라집니다 당신이 PHP 코드를 사용해야 ANSI 인코딩 이름에 올바른 URL을 작성합니다. 하지만 변환하지 않는 것이 좋습니다. 당신이 문제가 있다면, 나는 그 "깨진"이름이 아니라고 생각합니다.