Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 上载文件时出现特殊(复合)字符问题_Php_Html - Fatal编程技术网

Php 上载文件时出现特殊(复合)字符问题

Php 上载文件时出现特殊(复合)字符问题,php,html,Php,Html,我正在通过表单上传包含特殊字符的文件名。似乎在某种程度上,当文件被发送时,名称被更改了 这对我来说是有问题的,因为我想根据预先确定的列表检查给定的名称。只要不使用像å/ä/ö这样的特殊(复合)字符,一切都很好。我怎样才能解决这个问题 表格: <form name="uploadForm" id="uploadForm" method="POST" enctype='multipart/form-data'> <

我正在通过表单上传包含特殊字符的文件名。似乎在某种程度上,当文件被发送时,名称被更改了

这对我来说是有问题的,因为我想根据预先确定的列表检查给定的名称。只要不使用像å/ä/ö这样的特殊(复合)字符,一切都很好。我怎样才能解决这个问题

表格:

<form name="uploadForm" id="uploadForm" method="POST" enctype='multipart/form-data'>
    <label class="upload" for="upload">Choose file(s) to upload</label>
    <input type="file" name="upload[]" id="upload" accept=".m4a" multiple required> 
    <button type="submit" name='submit' id="submit">Save</button>
</form>
上传似乎会影响复合字符“ö”

提前谢谢

你想要国际的

注:

  • FORM_C
    是默认值,仅供参考
  • json\u encode()
    仅用于转义unicode以便于查看
$input='rör.m4a';
瓦鲁垃圾场(
json_encode(Normalizer::normalize($input,Normalizer::FORM_C)),
json_编码(Normalizer::normalize($input,Normalizer::FORM_D))
);
输出:

string(14) ""r\u00f6r.m4a""
string(15) ""ro\u0308r.m4a""

除了简单地比较文件名之外,您还应该特别注意使用哪个文件系统的规范化格式。例如:ext4不在乎,它会创建两个文件名看起来完全相同的文件,而FS-Mac使用的任何文件都只会使用分解的格式,并以静默方式转换合成的字符。

我做了一个快速测试,它对我来说工作正常。每当我遇到不在ASCII集中的字符的问题时,我会立即转到字节,查看其中的实际内容,不要相信你的眼睛或调试器告诉你的内容。试着运行
echo bin2hex($\u FILES['upload']['name'][0])
并将其与
echo bin2hex('rör.m4a')
进行比较,看看您的机器会告诉您什么。谢谢:)对于
$\u FILES['upload']['name'][0]
rör.m4a
,我会得到不同的十六进制输出。即使页面上只有上面的代码,你能用这些值编辑上面的文章吗?
string(14) ""r\u00f6r.m4a""
string(15) ""ro\u0308r.m4a""