>백엔드 개발 >PHP 문제 >PHP로 업로드한 중국어 파일의 파일명이 깨졌을 경우 어떻게 해야 하나요?

PHP로 업로드한 중국어 파일의 파일명이 깨졌을 경우 어떻게 해야 하나요?

coldplay.xixi
coldplay.xixi원래의
2020-07-18 14:33:573494검색

PHP에서 업로드한 중국어 파일의 잘못된 파일 이름에 대한 해결 방법: HTML 파일의 head 태그 중간에 관련 문을 추가하여 인코딩을 통일되게 유지하세요. 코드는 [

PHP에서 업로드한 중국어 파일의 잘못된 파일 이름에 대한 해결 방법:

방법 1: 아마도 내 시스템이 깨질 수도 있습니다. 그래서 코드를 다시 작성했습니다:

move_uploaded_file($_FILES["file"]["tmp_name"], "upload/测试数据.txt");

결과가 깨졌습니다. 즉, 시스템 문제는 아닙니다. php 파일 자체는 utf8로 인코딩되어 있습니다.

move_uploaded_file($_FILES["file"]["tmp_name"],"upload/测试数据.txt");

문은 utf8로 인코딩되어야 하며, 이전에 업로드한 파일 이름은 utf8로 인코딩되어서는 안 됩니다. 소스 문자열 자체가 utf8로 인코딩되지 않았기 때문에 다음 문은 잘못된 것입니다.

iconv("UTF-8","gbk//TRANSLIT",$_FILES["file"]["name"]);

함수를 사용하여 소스 문자열의 인코딩을 확인하세요:

$e=mb_detect_encoding($text, array(‘UTF-8’, ‘GBK’,’gb2312’));2 echo $e;

결과는 CP936입니다. 즉, 소스 문자열 인코딩은 GBK입니다.

시도해보세요

move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . iconv("gbk","UTF-8",$_FILES["file"]["name"]));

문제가 해결되었습니다. 문자가 더 이상 깨지지 않습니다

방법 2:

사실 , HTML 파일의 헤드에 추가하는 또 다른 해결책이 있습니다. 태그 중간에

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
를 추가하여 인코딩을 통일되게 유지하면 더 이상 트랜스코딩할 필요가 없습니다

결론

    iconv 기능을 사용하면 업로드 시 중국어 파일 이름이 왜곡되는 문제를 해결할 수 있습니다. 실제로 iconv는 다양한 문제를 해결할 수 있습니다. 이러한 잘못된 코드 문제는 일관성 없는 인코딩으로 인해 발생합니다.
  • 소스 문자열의 인코딩을 확인하세요. iconv 기능을 사용하기 전에 소스 문자열의 인코딩을 이미 결정하지 않은 경우
  • 모든 코드의 인코딩이 일치하는지 확인하고 최후의 수단으로 iconv 기능을 사용하세요. 서버에 저장된 파일명으로 중국어 파일명을 사용하지 마세요. 파일명을 자신의 파일명으로 변환해주세요. (영어 파일명도 변환해주세요)
  • 관련 학습 권장 사항:

    PHP 프로그래밍 입문부터 주인님

위 내용은 PHP로 업로드한 중국어 파일의 파일명이 깨졌을 경우 어떻게 해야 하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

관련 기사

더보기