【问题标题】:PHP Rename file which have unrecognized charactorPHP重命名具有无法识别字符的文件
【发布时间】:2019-07-06 22:44:12
【问题描述】:

我正在尝试重命名文件,

unizp生成的那个文件是一个zip文件, 但文件有一个奇怪的字符

Lieferungen und R�cklieferungen_RvP_2019_02_04.csv

我们无法控制该角色,因为我们从第 3 方获取了 zip 文件。

那个符号是 ü,但是当使用 php 代码解压缩时,它会显示那个奇怪的符号。

我尝试使用此代码

$files = glob("/xxxxmyfullpath/unzipped/*.csv");
echo $numfiles = count($files);

if ($numfiles == 1) {
  // Rename it
  echo $files[0];
  rename($files[0], "testing.csv");
}

glob 似乎无法识别文件。

有人知道如何从文件名中删除那个无法识别的符号

【问题讨论】:

  • 听起来您的字符集与文件的字符集不同。我建议您尝试将您的 PHP 标头设置为 utf8,header('Content-Type: text/html; charset=utf-8'); 在您的文件顶部。
  • 我会尝试,但我们使用 shell 命令解压缩 echo shell_exec('7z x "'.$zipfile.'" -o"'.$extractfilepath.'" -passwordhere');跨度>
  • 如果您无法控制名称的原始来源,您可能还需要utf8_encode()

标签: php rename glob unzip


【解决方案1】:

文件名的编码可能是 Windows-1252,西欧,但您的终端可能使用 UTF-8。 � = ü = ü带有分音符号的拉丁文小写字母 u。 如果您的 $numfiles 大于 1,则您的重命名代码根本不会运行。如果您提取的文件的名称包含非法字符,则它根本不会“glob”。 在解压缩存档之前,您必须切换到旧代码页。 尝试: setlocale(LC_ALL, 'C'); 然后,尝试运行您的代码。

【讨论】:

    猜你喜欢
    • 2017-05-17
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2021-02-26
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    相关资源
    最近更新 更多