php上传中文文件名乱码问题处理方案_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函数。
吐槽一下,尽量不使用中文文件名作为服务器上保存的文件名,请将文件名转化成自己的文件名(即使是英文文件名也请转化一下)。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Methoden zur Lösung des chinesischen verstümmelten Problems von PHPDompdf PHPDompdf ist ein Tool zum Konvertieren von HTML-Dokumenten in PDF-Dateien. Es ist leistungsstark und einfach zu verwenden. Allerdings stößt man bei der Verarbeitung chinesischer Inhalte manchmal auf das Problem verstümmelter chinesischer Schriftzeichen. In diesem Artikel werden einige Methoden zur Lösung des Problems verstümmelter chinesischer Zeichen in PHPDompdf vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Bei der Verwendung von Schriftartdateien zur Verarbeitung chinesischer Inhalte besteht ein häufiges Problem darin, dass Dompdf standardmäßig keine chinesischen Inhalte unterstützt.

Die ultimative Methode zur Lösung des Problems verstümmelter chinesischer Zeichen in PyCharm erfordert spezifische Codebeispiele. Einführung: PyCharm ist eine häufig verwendete integrierte Entwicklungsumgebung (IDE) für Python und verfügt über leistungsstarke Funktionen und eine benutzerfreundliche Benutzeroberfläche Mehrheit der Entwickler. Wenn PyCharm jedoch chinesische Zeichen verarbeitet, kann es manchmal zu verstümmelten Zeichen kommen, was zu bestimmten Problemen bei der Entwicklung und beim Debuggen führt. In diesem Artikel wird vorgestellt, wie das chinesische verstümmelte Problem in PyCharm gelöst werden kann, und es werden spezifische Codebeispiele gegeben. 1. Richten Sie das Projekt ein

Häufige Gründe und Lösungen für verstümmelte chinesische Zeichen bei der MySQL-Installation MySQL ist ein häufig verwendetes relationales Datenbankverwaltungssystem. Bei der Verwendung kann es jedoch zu Problemen mit verstümmelten chinesischen Zeichen kommen, die Entwicklern und Systemadministratoren Probleme bereiten. Das Problem verstümmelter chinesischer Zeichen wird hauptsächlich durch falsche Zeichensatzeinstellungen, inkonsistente Zeichensätze zwischen dem Datenbankserver und dem Client usw. verursacht. In diesem Artikel werden die häufigsten Ursachen und Lösungen für verstümmelte chinesische Zeichen bei der MySQL-Installation ausführlich vorgestellt, um allen zu helfen, dieses Problem besser zu lösen. 1. Häufige Gründe: Zeichensatzeinstellung

Lösungen für die Ajax-Übertragung verstümmelter chinesischer Zeichen: 1. Legen Sie eine einheitliche Codierungsmethode fest. 3. Clientseitige Decodierung. 5. Verwenden Sie das JSON-Format. Detaillierte Einführung: 1. Legen Sie eine einheitliche Codierungsmethode fest, um sicherzustellen, dass der Server und der Client dieselbe Codierungsmethode verwenden. Unter normalen Umständen ist UTF-8 eine häufig verwendete Codierungsmethode, da es mehrere Sprachen und Zeichensätze unterstützen kann. 2. Serverseitige Codierung: Stellen Sie sicher, dass die chinesischen Daten mit der richtigen Codierungsmethode codiert und dann an den Client usw. übergeben werden.

Das Problem verstümmelter chinesischer Zeichen in PHP-Webseiten besteht darin, dass chinesische Zeichen in der Webseitenanzeige als verstümmelte Zeichen angezeigt werden. Diese Situation wird normalerweise durch eine inkonsistente Codierung verursacht oder der Zeichensatz ist nicht festgelegt. Um das Problem der verstümmelten chinesischen Zeichen in PHP-Webseiten zu lösen, müssen viele Aspekte berücksichtigt werden. Im Folgenden finden Sie einige gängige Lösungen und spezifische Codebeispiele. Legen Sie die PHP-Dateikodierung fest: Stellen Sie zunächst sicher, dass die Kodierung der PHP-Datei selbst UTF-8 ist. Sie können die UTF-8-Kodierung beim Speichern im Editor festlegen oder den folgenden Code zum festzulegenden Header der PHP-Datei hinzufügen die Kodierung: &l

Das Problem der verstümmelten chinesischen Linux-Zeichen ist ein Problem, auf das viele chinesische Benutzer bei der Verwendung von Linux-Systemen häufig stoßen. Der Hauptgrund für verstümmelte chinesische Schriftzeichen liegt darin, dass die vom Linux-System standardmäßig verwendete Zeichenkodierung UTF-8 ist, einige Software oder Anwendungen jedoch möglicherweise nicht mit der UTF-8-Kodierung kompatibel sind, was dazu führt, dass chinesische Schriftzeichen nicht korrekt angezeigt werden. Es gibt viele Möglichkeiten, dieses Problem zu lösen. Im Folgenden werden einige gängige Lösungen beschrieben und spezifische Codebeispiele bereitgestellt. Ändern Sie die Zeichenkodierungseinstellungen des Terminals: Die Zeichenkodierungseinstellungen des Terminals bestimmen, ob das Terminal korrekt funktioniert

Praktische Tipps zum schnellen Lösen chinesischer verstümmelter Zeichen in Eclipse erfordern spezifische Codebeispiele. Übersicht: Eclipse ist eine weit verbreitete integrierte Entwicklungsumgebung (IDE), die nicht nur die Entwicklung mehrerer Programmiersprachen, sondern auch mehrere Betriebssysteme unterstützt. Bei der Verwendung von Eclipse kann es jedoch manchmal vorkommen, dass wir auf das Problem verstümmelter chinesischer Zeichen stoßen, was zu Unannehmlichkeiten für unsere Entwicklungsarbeit führt. In diesem Artikel werden einige praktische Techniken vorgestellt, die uns helfen, das Problem der verstümmelten chinesischen Zeichen in Eclipse schnell zu lösen, und spezifische Codebeispiele angehängt werden. eins,

Eine effektive Methode, um verstümmelte chinesische Matplotlib-Zeichen schnell zu lösen: Matplotlib ist eine häufig verwendete Zeichenbibliothek in Python. Bei der Verwendung von Chinesisch für Anmerkungen und Anzeige treten jedoch häufig verstümmelte Zeichen auf. In diesem Artikel werden einige effektive Problemumgehungen vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Legen Sie die Schriftart fest. Standardmäßig verwendet matplotlib Systemschriftarten für die chinesische Anzeige. Allerdings enthalten Systemschriftarten häufig keine chinesischen Zeichen, sodass Sie die entsprechende chinesische Schriftart manuell festlegen müssen. Zuerst müssen Sie bestätigen, ob der Computer dies getan hat
