목차
php上传中文文件名乱码问题处理方案,
php教程 php手册 php上传中文文件名乱码问题处理方案,

php上传中文文件名乱码问题处理方案,

Jun 13, 2016 am 09:15 AM
중국어 왜곡 문자

php上传中文文件名乱码问题处理方案,

php上传文件是最最基础的一个技术点,但是深入进去也有不少问题需要解决,这不,上传中文文件后,文件名变成了乱码。

下面是问题代码,很简单:

1.问题代码

html部分:

复制代码 代码如下:


 
 


 
 enctype="multipart/form-data">
 
 
 

 
 
 
 

php部分:
 

复制代码 代码如下:


   if ($_FILES["file"]["error"] > 0)
 {
     echo "Return Code: " . $_FILES["file"]["error"] . "
";
 }else
 {
     echo "Upload: " . $_FILES["file"]["name"] . "
";
     echo "Type: " . $_FILES["file"]["type"] . "
";
     echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb
";
     echo "Temp file: " . $_FILES["file"]["tmp_name"] . "
";
     if (file_exists("upload/" . $_FILES["file"]["name"]))
     {
         echo $_FILES["file"]["name"] . " already exists. ";
     }
     else
     {
       move_uploaded_file($_FILES["file"]["tmp_name"],
       "upload/" . $_FILES["file"]["name"]);
     }
 }

上传了一个文件名为“测试数据.txt”的文件,oh ho,文件是传上去了,但是文件名为乱码。

2.初试

网上搜索一下解决方案,将

复制代码 代码如下:


move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);

改成

复制代码 代码如下:


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

结果发现iconv函数返回值为false。

查一下函数手册,发现第二个参数有特别的用法,简单翻译一下就是我可以在编码的后面追加//TRANSLIT 或 //IGNORE ,前者会将无法翻译的字符转成最接近的字符,后者就是直接忽略不能转化的字符。

试一下:

复制代码 代码如下:


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

结果:

bool(false) string(4) ".txt"

也就是说中文都没法转化,甚至连接近的字符都没有,看来网上介绍的方法也并非万能。

3.网上介绍方法失败,再尝试

猜测一下,也许我的系统在创建中文文件的时候会乱码,于是我将代码改写了一下:

复制代码 代码如下:


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'));
echo $e;

结果是CP936,也就是源字符串编码是GBK。

试一下

复制代码 代码如下:


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

问题解决,不再乱码

4.另一种解决办法

实际上还有一种解决办法,就是在html文件的head标签中间加入

复制代码 代码如下:



从而使编码保持统一,也就不需要再转码了

5.下面是结论

使用iconv函数可以解决上传中文文件名乱码的问题,实际上iconv能解决各种各样的由于编码不统一造成的乱码问题。
使用iconv函数请先检查源字符串的编码,除非你已经确定了源字符串的编码。
尽量保证所有的代码的编码一致,万不得已才使用iconv函数。
吐槽一下,尽量不使用中文文件名作为服务器上保存的文件名,请将文件名转化成自己的文件名(即使是英文文件名也请转化一下)。

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP Dompdf의 중국어 문자 왜곡 문제를 해결하는 방법 PHP Dompdf의 중국어 문자 왜곡 문제를 해결하는 방법 Mar 05, 2024 pm 03:45 PM

PHPDompdf의 중국어 왜곡 문제를 해결하는 방법 PHPDompdf는 HTML 문서를 PDF 파일로 변환하는 도구입니다. 강력하고 사용하기 쉽습니다. 그런데 중국어 콘텐츠를 처리하다 보면 한자가 깨져 나오는 문제가 가끔 발생합니다. 이 기사에서는 PHPDompdf의 중국어 왜곡 문제를 해결하는 몇 가지 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 중국어 콘텐츠를 처리하기 위해 글꼴 파일을 사용할 때 일반적인 문제는 Dompdf가 기본적으로 중국어 콘텐츠를 지원하지 않는다는 것입니다.

PyCharm의 중국어 왜곡 문자 문제에 대한 궁극적인 해결책 PyCharm의 중국어 왜곡 문자 문제에 대한 궁극적인 해결책 Jan 27, 2024 am 08:00 AM

PyCharm에서 중국어 문자 깨짐 문제를 해결하는 궁극적인 방법에는 구체적인 코드 예제가 필요합니다. 소개: PyCharm은 일반적으로 사용되는 Python 통합 개발 환경(IDE)으로 강력한 기능과 친숙한 사용자 인터페이스를 갖추고 있어 많은 사람들에게 사랑받고 있습니다. 대부분의 개발자. 그러나 PyCharm이 중국어 문자를 처리할 때 문자가 깨져 개발 및 디버깅 시 특정 문제를 일으키는 경우가 가끔 있습니다. 이 기사에서는 PyCharm에서 중국어 왜곡 문제를 해결하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 프로젝트 설정

MySQL 설치 시 중국어 문자가 왜곡되는 일반적인 원인과 해결 방법 MySQL 설치 시 중국어 문자가 왜곡되는 일반적인 원인과 해결 방법 Mar 02, 2024 am 09:00 AM

MySQL 설치 시 중국어 문자 깨짐의 일반적인 원인과 해결 방법 MySQL은 일반적으로 사용되는 관계형 데이터베이스 관리 시스템이지만 사용 중에 중국어 문자 깨짐 문제가 발생할 수 있으며 이는 개발자와 시스템 관리자에게 문제를 야기합니다. 중국어 깨짐 문제는 주로 잘못된 문자 집합 설정, 데이터베이스 서버와 클라이언트 간의 문자 집합 불일치 등으로 인해 발생합니다. 이 기사에서는 모든 사람이 이 문제를 더 잘 해결할 수 있도록 MySQL 설치 시 중국어 문자가 왜곡되는 일반적인 원인과 해결 방법을 자세히 소개합니다. 1. 일반적인 이유: 문자 집합 설정

ajax가 중국어 왜곡 문자를 전송하는 경우 수행할 작업 ajax가 중국어 왜곡 문자를 전송하는 경우 수행할 작업 Nov 15, 2023 am 10:42 AM

중국어 왜곡 문자의 Ajax 전송 솔루션: 1. 통합 인코딩 방법 설정 2. 서버 측 인코딩 4. HTTP 응답 헤더 설정 5. JSON 형식 사용 자세한 소개: 1. 서버와 클라이언트가 동일한 인코딩 방법을 사용하도록 통일된 인코딩 방법을 설정합니다. 일반적인 상황에서 UTF-8은 여러 언어와 문자 집합을 지원할 수 있기 때문에 일반적으로 사용되는 인코딩 방법입니다. 2, 서버 측 인코딩. 서버 측에서 중국어 데이터가 올바른 인코딩 방법으로 인코딩된 후 클라이언트 등에 전달되는지 확인합니다.

Linux 시스템에서 중국어 왜곡 문자 문제를 해결하는 방법 Linux 시스템에서 중국어 왜곡 문자 문제를 해결하는 방법 Feb 19, 2024 am 09:22 AM

리눅스 중국어 왜곡 문자 문제는 많은 중국 사용자들이 리눅스 시스템을 사용할 때 자주 겪는 문제입니다. 중국어 문자가 왜곡되는 주된 이유는 Linux 시스템에서 사용하는 기본 문자 인코딩이 UTF-8이지만 일부 소프트웨어나 응용 프로그램이 UTF-8 인코딩과 호환되지 않아 중국어 문자가 올바르게 표시되지 않기 때문입니다. 이 문제를 해결하는 방법에는 여러 가지가 있습니다. 몇 가지 일반적인 해결 방법이 아래에 자세히 설명되어 있으며 구체적인 코드 예제가 제공됩니다. 터미널 문자 인코딩 설정 수정: 터미널의 문자 인코딩 설정에 따라 터미널이 올바르게 인코딩할 수 있는지 여부가 결정됩니다.

PHP 웹페이지에 중국어 문자가 깨져 있는 경우 어떻게 해야 합니까? 완벽한 솔루션 PHP 웹페이지에 중국어 문자가 깨져 있는 경우 어떻게 해야 합니까? 완벽한 솔루션 Mar 26, 2024 pm 03:27 PM

PHP 웹 페이지의 중국어 문자 깨짐 문제는 웹 페이지 표시에서 중국어 문자가 깨져서 표시된다는 것입니다. 이러한 상황은 일반적으로 인코딩이 일관되지 않거나 문자 세트가 설정되지 않아 발생합니다. PHP 웹 페이지의 중국어 문자 깨짐 문제를 해결하려면 여러 측면에서 시작해야 합니다. 다음은 몇 가지 일반적인 솔루션과 특정 코드 예제입니다. PHP 파일 인코딩 설정: 먼저 PHP 파일 자체의 인코딩이 UTF-8인지 확인하세요. 편집기에서 저장할 때 UTF-8 인코딩을 설정하거나, 설정하려는 PHP 파일의 헤더에 다음 코드를 추가할 수 있습니다. 인코딩: &l

Eclipse에서 한자 깨짐 문제를 효과적으로 해결하는 실용적인 방법 Eclipse에서 한자 깨짐 문제를 효과적으로 해결하는 실용적인 방법 Jan 03, 2024 pm 05:50 PM

Eclipse에서 중국어 왜곡 문자를 빠르게 해결하기 위한 실용적인 팁에는 특정 코드 예제가 필요합니다. 개요: Eclipse는 여러 프로그래밍 언어 개발을 지원할 뿐만 아니라 여러 운영 체제도 지원하는 널리 사용되는 통합 개발 환경(IDE)입니다. 그러나 Eclipse를 사용하다 보면 가끔 중국어 글자가 깨져 나오는 문제가 발생하여 개발 작업에 불편을 초래하는 경우가 있습니다. 이 기사에서는 Eclipse에서 중국어 문자 깨짐 문제를 신속하게 해결하는 데 도움이 되는 몇 가지 실용적인 기술을 소개하고 특정 코드 예제를 첨부합니다. 하나,

matplotlib 중국어 왜곡 문제를 해결하는 효과적인 방법 matplotlib 중국어 왜곡 문제를 해결하는 효과적인 방법 Jan 13, 2024 am 11:03 AM

matplotlib 중국어 문자 깨짐을 빠르게 해결하는 효과적인 방법 소개: matplotlib는 Python에서 일반적으로 사용되는 그리기 라이브러리입니다. 그러나 주석 및 표시를 위해 중국어를 사용할 때 문자 깨짐이 자주 발생합니다. 이 문서에서는 몇 가지 효과적인 해결 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 글꼴 설정 matplotlib은 기본적으로 중국어 표시용 시스템 글꼴을 사용하지만 시스템 글꼴에 중국어 문자가 포함되어 있지 않은 경우가 많으므로 적절한 중국어 글꼴을 수동으로 설정해야 합니다. 먼저 컴퓨터에

See all articles