0

我目前很难尝试做最简单的事情:

我有一个 UCS-2 LE BOM 编码文件,我将其转换为 UTF-8。以下是 Notepad++ 关于编码的说明: 记事本加加截图

我的转换程序很简单:

  1. 我正在打开输入文件并创建一个输出文件。
  2. 我正在解析输入文件并将每一行转换为 UTF-8 格式
  3. 转换完成后,我删除输入文件
  4. 删除输入文件后,我将输出文件重命名为输入文件的名称

这是执行此操作的代码:

public function convertCsvToUtf8(string $absolutePathToFile) : string {
    $dotPosition = strrpos($absolutePathToFile, ".");
    $absolutePathToNewFile = substr($absolutePathToFile, 0, $dotPosition)."-utf8.csv";

    $res_input_file = fopen($absolutePathToFile, "r");
    $res_output_file = fopen($absolutePathToNewFile, "w+");
    while($input_string = fgets($res_input_file)){
        $inputEncoding = mb_detect_encoding($input_string, mb_list_encodings(), true);
        $output_string = iconv($inputEncoding, 'UTF-8', $input_string);
        fputs($res_output_file, ($output_string));
    }
    fclose($res_input_file);
    fclose($res_output_file);
    unlink($absolutePathToFile);
    rename($absolutePathToNewFile, $absolutePathToFile);
    return $absolutePathToFile;
}

在这里您可以看到一个执行示例: xdebug 截图

所以……乍一看似乎一切都还好(期待“°”被一个奇怪的字符代替);但是当我用 Notepad++ 打开输出文件时,这是我看到的示例: 在此处输入图像描述

我不知道这里发生了什么。任何帮助都是极好的 !随时询问更多详情!提前致谢,

4

0 回答 0