私は現在、最も簡単なことをしようとして苦労しています:
UTF-8 に変換する UCS-2 LE BOM エンコード ファイルがあります。エンコーディングについてメモ帳++が言うことは次のとおりです。
私の変換ルーチンは簡単です:
- 入力ファイルを開き、出力ファイルを作成しています。
- 入力ファイルを解析し、外出先ですべての行を 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;
}
だから...一見、すべて問題ないように見えます(「°」が奇妙な文字に置き換えられていることを期待してください)。しかし、メモ帳++で出力ファイルを開くと、次のサンプルが表示されます。
ここで何が起こっているのかわかりません。どんな助けでも素晴らしいでしょう!詳しくはお気軽にお尋ねください!前もって感謝します、