Wie konvertiere ich viele Textdateien von <some_encoding> zu utf8-no-bom? </some_encoding>

3692
RProgram

Ich suche viele Textdateien (40+) von ISO-Latin-1 nach UTF8-no-bom zu konvertieren. Wie kann ich das erreichen?

0
Ich habe geschrieben, welche Kodierung oben ist. ISO-Latin RProgram vor 10 Jahren 0
Ich hätte schwören können, dass Ihre ursprüngliche Revision die Kodierung nicht angibt, daher der Kommentar. Ramhound vor 10 Jahren 0

2 Antworten auf die Frage

1
matan129

Vom Stackoverflow :

  • Sie können ein Tool wie iconv von GnuWin32 und erhalten  Führen Sie ein Batch-Skript aus, um alle Dateien auf diese Weise zu verarbeiten.  Aber welche Kodierung gibt es jetzt? Wenn sie ANSI sind, und Sie verwenden keine Bytes mit Werten => 128, dann sind sie bereits BOM-loser UTF-8. Vielleicht können Sie das verwenden, um die Anzahl von einzugrenzen  Dateien, die Sie bearbeiten müssten - vielleicht genug, dass Sie nur eine wenige Dateien, die konvertiert werden sollen (und dies möglicherweise auf individueller Basis tun würde).
  • Eigentlich mache ich das mit Notepad ++. Bevor Sie dies versuchen, müssen Sie eine Sicherungskopie Ihrer Dateien erstellen. Sie müssen ein Makro erstellen, das dies ausführt:  
    1. Konvertieren Sie die aktuell geöffnete Datei in UTF-8 ohne BOM.
    2. Markieren Sie den gesamten Text in Ihrer Datei und kopieren Sie ihn (Warum das? Es sieht aus wie ein Fehler. Wenn Sie dies nicht tun, Ihre Datei wird durch den aktuellen Inhalt der Zwischenablage ersetzt ...);
    3. Speichern Sie die aktuelle Datei.
    4. Schließen Sie die aktuelle Datei.
    5. Speichern Sie dieses Makro.
    Öffnen Sie nun Ihre PHP- Dateien und führen Sie sie mit "Ausführen eines Makro-Multiple" aus Times ... "Befehl. Wenn Sie 100 Dateien geöffnet haben, lassen Sie sie 100 Mal laufen.
-1
PmChin
<? php $ url = getenv ("SERVER_ADDR"); // $ url = getenv (HTTP_POST_VARS); $ rootdir = 'd: \\ xampp \\ htdocs \\ ecoder'; $ dir = ".";  $ files = scan_dir ($ rootdir); foreach ($ files als $ file) { $ info = Pfadinfo ($ file); $ extF = $ info ["Erweiterung"]; if ($ extF == "php" || $ extF == "txt" || $ extF == "js" || $ extF == "css") {  echo $ file. " 
"; $ data = file_get_contents ($ file); writeUTF8File ($ file, $ data); echo $ file. ' wurde in UTF8
'umgewandelt; } } // Verwenden Sie diese Funktion, um alle Dateien in einem Verzeichnis (einschließlich Unterverzeichnissen) abzurufen. Funktion scan_dir ($ dir) { $ arrfiles = array (); if (is_dir ($ dir)) { if ($ handle = opendir ($ dir)) { chdir ($ dir); while (false! == ($ file = readdir ($ handle))) { if ($ file! = "." && $ file! = "..") { if (is_dir ($ file)) { $ arr = scan_Dir ($ file); foreach ($ arr als $ value) { $ arrfiles [] = $ dir. "/". $ value; } } else { $ arrfiles [] = $ dir. "/". $ file; } } } chdir ("../"); } closedir ($ handle); } $ arrfiles zurückgeben; } Funktion writeUTF8File ($ Dateiname, $ Inhalt) {// บันทึก ไฟล์ เป็น UTF8 $ f = fopen ($ Dateiname, "w"); # Now UTF-8 - Byte-Auftragsmarke hinzufügen fwrite ($ f, pack ("CCC", 0xef, 0xbb, 0xbf)); fwrite ($ f, $ content); fclose ($ f); } ?>
Bearbeiten Sie in Zukunft Ihre Antworten, um Fehler zu korrigieren, anstatt neue zu veröffentlichen. Daniel Beck vor 10 Jahren 1
Es wäre sehr nützlich zu erklären, wie der Code ausgeführt wird. pabouk vor 10 Jahren 0