Heim Backend-Entwicklung PHP-Tutorial 文件上传编码有关问题

文件上传编码有关问题

Jun 13, 2016 pm 01:32 PM
gbk post

文件上传编码问题
用Flash+PHP实现文件的批量上传。PHP在保存文件时,遇到编码问题:

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><?php header("Content-Type:text/html;charset=utf-8");
    function createDir($path){
        if (!file_exists($path)){
            createDir(dirname($path));
            mkdir($path, 0777);
        }
    }
    $uploaddir='upfile/'.date('Ymd').'/';
    createDir($uploaddir);
    $uploadfile=$uploaddir.iconv('utf-8','gbk',$_POST['fn']);
    if (move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadfile)) {
        echo 'OK'.$_POST['bn'].'{[(*})]'.$_POST['up'].'{[(*})]'.'$uploadjson'.'{[(*})]'.'$listjson';
    }else{
        echo 'ERROR';
    }
?>
Nach dem Login kopieren

文件名很不规范,有中文、英文、法文、俄文、……不确定类型,这时候有些文件保存下来,要么是乱码,要么被截断(扩展名都丢失了)。iconv('utf-8','gbk',$_POST['fn']),这里的问题?该如何做?

------解决方案--------------------
你当前页面用了utf-8
header("Content-Type:text/html;charset=utf-8");


而这个应不该转成gbk
$uploadfile=$uploaddir.iconv('utf-8','gbk',$_POST['fn']);

去掉或是
$uploadfile=$uploaddir.iconv('gbk','utf-8', $_POST['fn']);
试试
------解决方案--------------------
GBK编码的字符串没有俄文这些符号。也就是说它只适用于中文
建议你用utf-8来保存,文件名乱码的问题就这么撂着吧
------解决方案--------------------
$uploadfile = $uploaddir . base64_encode($_POST['fn']) . '.' . pathinfo($_POST'fn'], PATHINFO_EXTENSION);
------解决方案--------------------
你数据源是GBK要怎子搞呢。
iconv用//IGNORE忽略特殊符号转成UTF8、要么就重命名。
------解决方案--------------------
你自己在你的windows机上能够输入俄文,阿拉伯文命名一个文件吗?
文件名要视乎客户操作系统的编码,一般国内用户用的都是中文版windows,系统默认内部编码属GBK,GBK怎么可能包含俄文之类的语种呢。或者换过来说你让操作系统编码为iso-8859-1的用户下载你的中文名文件,中文即使给你转成gbk还不一样乱码。干脆就随机命名好了,不然有啥好方法,全世界各地不同的操作系统用户系统编码千差万别,除非所有都统一用utf-8做内码,你这边也不用费劲用iconv转了。
你看我现在用ubuntu,系统编码就是utf-8的,那些中文俄文法文你不转GBK对我这种用户就算正常的,你转GBK倒还乱码了。呵呵。
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Go-Sprachkodierungsanalyse: UTF-8- und GBK-Vergleich Go-Sprachkodierungsanalyse: UTF-8- und GBK-Vergleich Mar 28, 2024 pm 01:54 PM

Analyse der Go-Sprachkodierung: UTF-8 vs. GBK-Vergleich In der Go-Sprache ist die Verarbeitung der String-Kodierung eine der häufigsten Aufgaben. Unter diesen sind UTF-8 und GBK zwei häufig verwendete Zeichenkodierungsmethoden. In diesem Artikel wird ein detaillierter Vergleich zwischen UTF-8 und GBK durchgeführt, deren Unterschiede und Verwendung erläutert und spezifische Codebeispiele beigefügt. 1. Einführung in UTF-8 und GBK UTF-8: UTF-8 ist eine Unicode-Codierungsmethode mit variabler Länge, die Zeichen in fast allen Sprachen der Welt darstellen kann. UTF-8

Eine kurze Analyse der POST-Methode in PHP mit Parametern zum Springen zur Seite Eine kurze Analyse der POST-Methode in PHP mit Parametern zum Springen zur Seite Mar 23, 2023 am 09:15 AM

Für PHP-Entwickler ist die Verwendung von POST zum Springen zu Seiten mit Parametern eine grundlegende Fähigkeit. POST ist eine Methode zum Senden von Daten in HTTP. Sie kann Daten über HTTP-Anfragen an den Server senden und die Seite auf der Serverseite überspringen. In der tatsächlichen Entwicklung müssen wir häufig POST mit Parametern verwenden, um zu Seiten zu springen und bestimmte funktionale Zwecke zu erreichen.

So ermitteln Sie, ob ein Beitrag in PHP übermittelt wurde So ermitteln Sie, ob ein Beitrag in PHP übermittelt wurde Mar 21, 2023 pm 07:12 PM

PHP ist eine weit verbreitete serverseitige Skriptsprache, mit der interaktive und dynamische Webanwendungen erstellt werden können. Bei der Entwicklung von PHP-Anwendungen müssen wir normalerweise Benutzereingabedaten zur Verarbeitung über Formulare an den Server übermitteln. Manchmal müssen wir jedoch feststellen, ob Formulardaten in PHP übermittelt wurden. In diesem Artikel erfahren Sie, wie Sie eine solche Feststellung treffen.

Beitrag zur Verwendung von Python-Anfragen Beitrag zur Verwendung von Python-Anfragen Apr 29, 2023 pm 04:52 PM

Python simuliert den Browser, der Post-Anfragen im Importrequests-Format sendet request.postrequest.post(url,data,json,kwargs)#Post-Anforderungsformat request.get(url,params,kwargs)#Im Vergleich zur Get-Anfrage sind die Parameter für das Senden von Post-Anfragen unterteilt Der Datenparameter „forms“ (x-www-form-urlencoded) unterstützt das Wörterbuchformat und das Zeichenfolgenformat. Das Wörterbuchformat verwendet die Methode json.dumps(), um die Daten in eine Zeichenfolge im legalen JSON-Format zu konvertieren

Wie initiiert Java eine http-Anfrage, ruft den Beitrag auf und erhält Schnittstellen? Wie initiiert Java eine http-Anfrage, ruft den Beitrag auf und erhält Schnittstellen? May 16, 2023 pm 07:53 PM

1. Java ruft die Post-Schnittstelle auf. 1. Verwenden Sie URLConnection oder HttpURLConnection. Es ist nicht erforderlich, andere JAR-Pakete herunterzuladen. Rufen Sie URLConnection auf kann nur empfangen werden, wenn der Antwortcode korrekt ist, um publicstaticStringsendPost(Stringurl,Stringparam){OutputStreamWriterout=null;BufferedReaderin=null;StringBuilderresult=newSt zurückzugeben

So lösen Sie das Problem, dass der NGINX-Reverse-Proxy bei einer POST-Anfrage einer HTML-Seite 405 zurückgibt So lösen Sie das Problem, dass der NGINX-Reverse-Proxy bei einer POST-Anfrage einer HTML-Seite 405 zurückgibt May 22, 2023 pm 07:49 PM

实现如下:server{listen80;listen443ssl;server_namenirvana.test-a.gogen;ssl_certificate/etc/nginx/ssl/nirvana.test-a.gogen.crt;ssl_certificate_key/etc/nginx/ssl/nirvana.test-a.gogen .key;proxy_connect_timeout600;proxy_read_timeout600;proxy_send_timeout600;c

PHP-Codebeispiel: So verwenden Sie POST zum Übergeben von Parametern und zum Implementieren von Seitensprüngen PHP-Codebeispiel: So verwenden Sie POST zum Übergeben von Parametern und zum Implementieren von Seitensprüngen Mar 07, 2024 pm 01:45 PM

Titel: PHP-Codebeispiel: So verwenden Sie POST zur Übergabe von Parametern und zur Implementierung von Seitensprüngen. In der Webentwicklung ist es häufig erforderlich, Parameter über POST zu übergeben und sie auf der Serverseite zu verarbeiten, um Seitensprünge zu implementieren. PHP als beliebte serverseitige Skriptsprache bietet eine Fülle von Funktionen und Syntax, um diesen Zweck zu erreichen. Im Folgenden wird anhand eines praktischen Beispiels erläutert, wie PHP zum Implementieren dieser Funktion verwendet wird. Zuerst müssen wir zwei Seiten vorbereiten, eine für den Empfang von POST-Anfragen und Prozessparametern

So implementieren Sie PHP, um zur Seite zu springen und POST-Daten zu übertragen So implementieren Sie PHP, um zur Seite zu springen und POST-Daten zu übertragen Mar 22, 2024 am 10:42 AM

PHP ist eine in der Website-Entwicklung weit verbreitete Programmiersprache, und Seitensprünge und die Übertragung von POST-Daten sind häufige Anforderungen bei der Website-Entwicklung. In diesem Artikel wird erläutert, wie PHP-Seitensprünge implementiert und POST-Daten übertragen werden, einschließlich spezifischer Codebeispiele. In PHP werden Seitensprünge im Allgemeinen über die Header-Funktion implementiert. Wenn Sie POST-Daten während des Sprungvorgangs übertragen müssen, können Sie dies mit den folgenden Schritten tun: Erstellen Sie zunächst eine Seite mit einem Formular, auf dem der Benutzer die Informationen ausfüllt und auf die Schaltfläche „Senden“ klickt. Acti im Formular

See all articles