我目前很难尝试做最简单的事情:
我有一个 UCS-2 LE BOM 编码文件,我将其转换为 UTF-8。以下是 Notepad++ 关于编码的说明:
我的转换程序很简单:
- 我正在打开输入文件并创建一个输出文件。
- 我正在解析输入文件并将每一行转换为 UTF-8 格式
- 转换完成后,我删除输入文件
- 删除输入文件后,我将输出文件重命名为输入文件的名称
这是执行此操作的代码:
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;
}
所以……乍一看似乎一切都还好(期待“°”被一个奇怪的字符代替);但是当我用 Notepad++ 打开输出文件时,这是我看到的示例:
我不知道这里发生了什么。任何帮助都是极好的 !随时询问更多详情!提前致谢,