Csv (und andere Dateien) in charset utf-8 umwandeln (batch)
Guten Abend,
ich hänge seit Tagen an einem Problem:
Eine csv und php Datei möchte ich, wie der Titel sagt, verlässlich in charset=utf-8 umwandeln. Mit Notepad++ habe ich das eigentlich schon erledigt, im Browser werden in den Dateien ü,äö und ß aber immer noch als � angezeigt. Da ständig neue csv-Dateien anfallen, möchte ich die natürlich automatisch ummodeln.
Also, zwei Fragen:
Wie kann ich die Umwandlung sicher bewerkstelligen und wie automatisieren?
Habe hier einen Ansatz gefunden, der aber leider überhaupt nicht geht bei mir:
iconv -f ISO-8859-1 -t utf-8 foo > bar
Kann mir jemand helfen?
gruenlinge
ich hänge seit Tagen an einem Problem:
Eine csv und php Datei möchte ich, wie der Titel sagt, verlässlich in charset=utf-8 umwandeln. Mit Notepad++ habe ich das eigentlich schon erledigt, im Browser werden in den Dateien ü,äö und ß aber immer noch als � angezeigt. Da ständig neue csv-Dateien anfallen, möchte ich die natürlich automatisch ummodeln.
Also, zwei Fragen:
Wie kann ich die Umwandlung sicher bewerkstelligen und wie automatisieren?
Habe hier einen Ansatz gefunden, der aber leider überhaupt nicht geht bei mir:
iconv -f ISO-8859-1 -t utf-8 foo > bar
Kann mir jemand helfen?
gruenlinge
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 264228
Url: https://administrator.de/contentid/264228
Ausgedruckt am: 19.11.2024 um 17:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo OKIDOKI,
mit Batch geht das, allerdings nicht ohne temporäre Dateien.
Grüße
rubberman
mit Batch geht das, allerdings nicht ohne temporäre Dateien.
@echo off &setlocal
:: Zieldatei spezifizieren
set "targetfile=test.txt"
:: temporäre Dateien spezifizieren
set "utf16file=%temp%\tmp16.utf~"
set "utf8file=%temp%\tmp8.utf~"
:: derzeitige Codepage sichern
for /f "tokens=2 delims=:" %%i in ('chcp') do set /a "oemcp=%%~ni"
:: zu Windows-1252 wechseln
>nul chcp 1252
:: Byte Order Marks schreiben
<nul >"%utf16file%" set /p "=ÿþ"
<nul >"%utf8file%" set /p "="
:: Konvertierung zu UTF-16 LE
>>"%utf16file%" cmd /u /q /d /c type "%targetfile%"
:: Konvertierung zu UTF-8
>nul chcp 65001
>>"%utf8file%" cmd /a /q /d /c type "%utf16file%"
>nul chcp %oemcp%
:: UTF-16 Datei löschen
del "%utf16file%"
:: Zieldatei durch UTF-8 Datei ersetzen
>nul move /y "%utf8file%" "%targetfile%"
rubberman
Moin,
oder mit Hilfe von Powershell in Batch
oder wenns mehrere Dateien auf einmal sein sollen
Gruß jodel32
oder mit Hilfe von Powershell in Batch
powershell -ExecutionPolicy ByPass -Command "&{gc 'c:\data_in.csv' | set-content 'c:\data_out.csv' -Encoding UTF8}"
powershell -ExecutionPolicy ByPass -Command "&{gci 'c:\daten\*.csv' | %{ (gc $_.Fullname) | set-content $_.Fullname -Encoding UTF8}}"