PHP에서 얻은 파일 이름이 왜곡되는 문제를 해결하는 방법은 무엇입니까?
많은 친구들이 UTF8로 인코딩된 PHP의 업로드 기능을 개발할 때 이런 문제에 직면할 것이라고 생각합니다. 중국어 파일 이름을 가진 파일을 업로드할 때, 실제로는 iconv 기능을 사용하여 편집할 수 있습니다. 이름을 다시 인코딩하면 문제가 해결됩니다. php 파일은 UTF-8 인코딩을 사용합니다. 올바르게 추측했다면 APACHE는 처리에 GBK를 사용해야 합니다. 이 문제를 고민하다가 관련 튜토리얼을 찾아보다가 간단하게 iconv 함수를 찾았습니다.
함수 프로토타입:
이 예제의 함수는 $content를 GBK에서 UTF-8 인코딩으로 변환하는 것입니다. string iconv ( string in_charset, string out_charset, string str )
使用例子:$content = iconv(“GBK”, “UTF-8”, $content);
깨진 문제의 핵심 코드:
$name=iconv("UTF-8","gb2312", $name);
복사 코드 코드는 다음과 같습니다.
$sFileName = “sda.php”; $sOriginalFileName = $sFileName; $sExtension = s str($sFileName, (strrpos($sFileName, ‘.’) + 1));//找到扩展名 $sExtension = strtolower($sExtension); $sFileName = date(“YmdHis”).rand(100, 200).”.”.$sExtension; //这样就是我们的新文件名了,全数字的不会有乱码了哦。
복사 코드 코드는 다음과 같습니다.
$filepath=”upload/”; $name=$filepath.$_FILES[“upfile”][“name”]; while(file_exists($name)){ $temp=explode(“.”,$name);//分割字符串 $name=$temp[0].”0″.”.”.$temp[1];//主文件名后面加0 }
/ /iconv() 함수는 키
if(move_uploaded_file($_FILES[“upfile”][“tmp_name”],iconv(“UTF-8″,”gb2312”,$name))){//处理…}
참고: 내 서버는 Windows XP, Apache이며 XP 문자 집합은 추정입니다. gbk가 되세요. 내 PHP 코드가 UTF-8 형식으로 저장되었기 때문에 파일 이름을 지정할 때 왜곡된 문자가 나타날 수 있으므로 iconv() 함수를 사용하여 원래 UTF-8 형식의 파일 이름을 gbk 형식으로 변환할 수 있습니다.
php utf8 인코딩으로 업로드 시 중국어 파일 이름이 깨져 나오는 문제 해결
많은 친구들이 utf8 인코딩 php의 업로드 기능을 개발할 때, 즉 중국어 파일 이름으로 파일을 업로드할 때 이런 문제에 직면하게 될 것이라고 생각합니다. 이름이 잘못된 문자로 변경되면 iconv 함수를 사용하여 파일 이름을 다시 인코딩하여 문제를 해결할 수 있습니다.
코드 복사 코드는 다음과 같습니다:
header("Content-Type:text/html;charset=utf-8"); $submit = $_POST[‘submit‘]; if(isset($submit) && trim($submit) != ‘‘){ $file = $_FILES[‘file‘]; if(isset($file[‘tmp_name‘])){ $name = iconv(‘utf-8‘,‘gb2312‘,$file[‘name‘]); //利用Iconv函数对文件名进行重新编码 if(move_uploaded_file($file[‘tmp_name‘],$name)){ echo ‘文件上传成功!‘; echo ‘图片信息:‘; print_r($file); } } }
위 내용은 PHP에서 얻은 파일 이름이 왜곡되는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!