当前位置: 首页 > 面试题库 >

PHP-上传utf-8文件名

慕仲渊
2023-03-14
问题内容

我是越南人,我想上传utf-8文件名,例如

Tên Tệp Tiếng Việt.JPG

这是我的代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>utf-8</title> 
</head>

<body> 
<?php
    if(isset($_POST["submit"])) { 
       if($_FILES["upload"]["error"] > 0 ) echo "FILE ERROR!"; 
       else 
         { 
           $base_dir = "D:/"; 
           $fn = $_FILES["upload"]["name"];

           $fn2 = $base_dir.$fn;

           move_uploaded_file($_FILES["upload"]["tmp_name"],$fn2); 
         } 
     } 
?> 
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
  <input type="file" name="upload" id="upload" /> 
  <input type="submit" name="submit" id="submit" value="Send" /> 
</form> 
</body> 
</html>

但是当我上传时,我在计算机D:\上看到的文件如下

Tên Tệp Tiếng Việt.JPG

如何解决这个问题


问题答案:

我使用的是Windows 8中文版,与此同时我也遇到类似的问题:

$filename = iconv("utf-8", "cp936", $filename);

cp代表Code pagecp936代表Code page
936
,这是Windows简体中文版的默认代码页。

所以我认为也许您的问题可以通过类似的方式解决:

$fn2 = iconv("UTF-8","cp1258", $base_dir.$fn);

我不太确定您的操作系统的默认代码页是否正确1258,您应该通过打开命令提示符并键入command来进行自我检查chcp。然后更改1258为命令给您的内容。

更新

PHP文件系统功能似乎只能处理系统代码页中的字符。因此,您在这里有2个选择:

  1. 将文件名中的字符限制为系统代码页-在您的情况下为437。但是我很确定代码页437不包含所有越南语字符。

  2. 将系统代码页更改为越南语:1258将文件名转换为cp1258。然后,文件系统功能应该起作用。

两种选择都是不足的:

选择1:您不能再使用越南语字符,这不是您想要的。

选择2:您必须更改系统代码页,并且文件名字符仅限于代码页1258。

更新

如何更改系统代码页:

转到Control Panel> Region> Administrative> Changesystemlocale,并选择Vietnamese(Vietnam)在下拉菜单中。



 类似资料:
  • 问题内容: 我在写一些注释过的PHP类,但偶然发现了一个问题。我的名字(用于@author标记)以一个(以UTF-8字符开头,…和一个奇怪的名字,我知道)结尾。 即使我将文件另存为UTF-8,也有一些朋友报告说他们看到这个字符完全弄乱了()。通过添加BOM表签名可以解决此问题。但是那件事让我有些烦恼,因为除了我在Wikipedia上以及关于SO的其他一些类似问题上所了解的之外,我对此并不了解。 我

  • 我有一个表格,可以很好地上传很多图像文件,大小也不一样。 但是有些图像没有上传到服务器。 问题图像具有空的$\u文件[name][tmp\u name]和$\u文件[name][error]==8 同时其他图像(文件大小较大或较小)正确上传。 你有什么想法吗? 谢谢

  • 主要内容:创建一个文件上传表单,创建上传脚本,上传限制,保存被上传的文件通过 PHP,可以把文件上传到服务器。 本章节实例在 test 项目下完成,目录结构为: 源码下载 创建一个文件上传表单 允许用户从表单上传文件是非常有用的。 请看下面这个供上传文件的 HTML 表单: 将以上代码保存到 form.html 文件中。 有关上面的 HTML 表单的一些注意项列举如下: <form> 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数

  • 我在几个小时的研究后发布了这个(几次...)。我还找不到任何答案。 我的目标是使用PHP编写一个CSV文件。这个文件必须有中文ANSI编码(我想简体中文是GB2312,在记事本中我只看到ANSI编码)。必须导入到另一个工具。 【重要提示】 我们目前正在转换一个带有记事本的文件和一台默认语言为中文的PC。这个过程是: 从web-app获取UTF8 CSV 保存为CSV与Excel 2003在中国PC

  • 问题内容: 如何将带有国际字符的json编码的字符串保存到数据库,然后在浏览器中解析解码的字符串? 问题答案: 这是一个编码问题。看起来在某些时候,数据被表示为ISO-8859-1。 流程的每个部分都需要UTF-8编码。 数据库连接 数据库表 您的PHP文件(如果您在文件中使用特殊字符,如上面的示例所示) 您输出的标题

  • 没有一行式解决方案。小心、注意细节,以及一致性。 PHP 中的 UTF-8 糟透了。原谅我的用词。 目前 PHP 在低层次上还不支持 Unicode。有几种方式可以确保 UTF-8 字符串能够被正确处理, 但并不容易,需要深入到 web 应用的所有层面,从 HTML,到 SQL,到 PHP。我们旨在提供一个简洁、 实用的概述。 PHP 层面的 UTF-8 基本的字符串操作,如串接 两个字符串、将字