0

私は現在、最も簡単なことをしようとして苦労しています:

UTF-8 に変換する UCS-2 LE BOM エンコード ファイルがあります。エンコーディングについてメモ帳++が言うことは次のとおりです。 メモ帳 プラス プラス スクリーンショット

私の変換ルーチンは簡単です:

  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 スクリーンショット

だから...一見、すべて問題ないように見えます(「°」が奇妙な文字に置き換えられていることを期待してください)。しかし、メモ帳++で出力ファイルを開くと、次のサンプルが表示されます。 ここに画像の説明を入力

ここで何が起こっているのかわかりません。どんな助けでも素晴らしいでしょう!詳しくはお気軽にお尋ねください!前もって感謝します、

4

0 に答える 0