Cygwin atau GnuWin32 menyediakan alat Unix seperti iconvdan dos2unix(dan unix2dos). Di bawah Unix / Linux / Cygwin, Anda akan ingin menggunakan "windows-1252" sebagai penyandian alih-alih ANSI (lihat di bawah). (Kecuali Anda tahu sistem Anda menggunakan codepage selain 1252 sebagai codepage default, dalam hal ini Anda harus memberi tahu ikonv tentang codepage yang tepat untuk diterjemahkan.)
Konversi dari satu ( -f) ke yang lain ( -t) dengan:
$ iconv -f windows-1252 -t utf-8 infile > outfile
Atau dalam bentuk find-all-and-conquer:
## this will clobber the original files!
$ find . -name '*.txt' -exec iconv --verbose -f windows-1252 -t utf-8 {} \> {} \;
Kalau tidak:
## this will clobber the original files!
$ find . -name '*.txt' -exec iconv --verbose -f windows-1252 -t utf-8 -o {} {} \;
Pertanyaan ini telah ditanyakan berkali-kali di situs ini, jadi inilah beberapa informasi tambahan tentang "ANSI". Dalam jawaban untuk pertanyaan terkait, CesarB menyebutkan :
Ada beberapa penyandian yang disebut "ANSI" di Windows. Faktanya,
ANSI keliru . iconv tidak memiliki cara menebak yang Anda inginkan.
Pengkodean ANSI adalah pengodean yang digunakan oleh fungsi "A" di Windows API (fungsi "W" menggunakan UTF-16). Penyandian yang sesuai biasanya tergantung pada bahasa sistem Windows Anda. Yang paling umum adalah CP 1252 (juga dikenal sebagai Windows-1252). Jadi, ketika editor Anda mengatakan ANSI, itu berarti "apa pun fungsi API yang digunakan sebagai pengkodean ANSI default", yang merupakan pengkodean non-Unicode default yang digunakan dalam sistem Anda (dan dengan demikian biasanya yang digunakan untuk file teks).
Halaman yang dia tautkan untuk memberikan berita gembira historis ini (dikutip dari Microsoft PDF ) tentang asal-usul CP 1252 dan ISO-8859-1, pengkodean lain yang sering digunakan:
[...] ini berasal dari fakta bahwa kode Windows halaman 1252 pada awalnya didasarkan pada konsep ANSI, yang menjadi ISO Standar 8859-1. Namun, dalam menambahkan titik kode ke rentang yang disediakan untuk kode kontrol dalam standar ISO, halaman kode Windows 1252 dan halaman kode Windows berikutnya yang semula didasarkan pada seri ISO 8859-x yang menyimpang dari ISO. Hingga hari ini, tidak jarang komunitas pengembangan, baik di dalam maupun di luar Microsoft, mengacaukan halaman kode 8859-1 dengan Windows 1252, serta melihat "ANSI" atau "A" yang digunakan untuk menandakan dukungan halaman kode Windows .
Jangan gunakan nama file yang sama dengan input dan output! iconvtampaknya memotong file hingga 32.768 byte jika melebihi ukuran ini. Ketika dia menulis dalam file yang dia coba baca, dia berhasil melakukan pekerjaan itu jika file itu cukup kecil, kalau tidak, dia akan memotong file itu tanpa peringatan ...
Niavlys
1
FYI Pertanyaan ini ditandai dengan osx dan tidak terlihat bahwa salah satu dari perintah convert-all berfungsi pada Yosemite atau El Cap. Versi ikonv Apel kapal tidak mendukung --verbose atau -o, dan sintaks pengalihan stdout lainnya tidak berfungsi karena suatu alasan dan hanya mengirimkannya ke stdout biasa.
Scott McIntyre
28
dengan PowerShell Anda dapat melakukan sesuatu seperti ini:
Mengonversi dari ANSI ke UTF melalui proposal pertama Anda tidak menghapus seluruh konten file teks saya ...
Acroneos
@ Arconeos: maka Anda membuat kesalahan: file-in adalah IN.txt, file outfile adalah OUT.txt ... dengan cara ini tidak mungkin untuk menimpa yang asli. jika Anda menggunakan nama file yang sama untuk IN.txt dan OUT.txt maka Anda menimpa file yang Anda baca, tentu saja.
akira
Powershell akan dikonversi ke UTF dengan BOM. temukan dan ikon mungkin jauh lebih mudah.
pparas
6
Halaman Wikipedia pada baris baru memiliki bagian tentang utilitas konversi .
Ini tampaknya taruhan terbaik Anda untuk konversi dengan hanya menggunakan alat yang dikirimkan Windows dengan:
UTFCast adalah konverter Unicode untuk Windows yang mendukung mode batch. Saya menggunakan versi berbayar dan cukup nyaman dengan itu.
UTFCast adalah konverter Unicode yang memungkinkan Anda mengonversi semua file teks menjadi pengkodean UTF hanya dengan satu klik mouse Anda. Anda dapat menggunakannya untuk mengonversi direktori yang penuh dengan file teks ke pengkodean UTF termasuk UTF-8, UTF-16 dan UTF-32 ke direktori output, sambil mempertahankan struktur direktori dari file asli. Bahkan tidak masalah jika file teks Anda memiliki ekstensi yang berbeda, UTFCast dapat secara otomatis mendeteksi file teks dan mengonversinya.
Oh, versi express (gratis) tidak berguna - hanya "Mendeteksi" utf-8 DENGAN BOM !! (semua orang bisa melakukan itu ). Hanya versi Pro yang Memperbarui Otomatis setiap 3 bulan dengan harga $ 20 per pop, akan mendeteksi secara otomatis. Harga mahal untuk pengguna non-perusahaan. DAN Waspadalah jika Anda mencoba versi dasar, dan file Anda sudah utf-8 (tanpa BOM), maka konverter ini akan mendeteksinya sebagai ASCII, kemudian (kembali) "mengonversi" ke utf-8, yang dapat mengakibatkan omong kosong . Waspadalah jika ini sebelum mencoba versi ekspres! Mereka memiliki versi demo untuk pro yang tidak menghasilkan keluaran - IMHO sia-sia karena tidak dapat memverifikasi hasil sebelum membeli!
SherylHohman
3
Oneliner menggunakan find, dengan deteksi otomatis
Pengkodean karakter dari semua file teks yang cocok akan terdeteksi secara otomatis dan semua file teks yang cocok dikonversi ke utf-8pengkodean:
Untuk melakukan langkah-langkah ini, sub shell shdigunakan dengan -exec, menjalankan satu-kapal dengan -cbendera, dan melewati nama file sebagai argumen posisi "$1"dengan -- {}. Di antara, utf-8file output dinamai sementara converted.
The findPerintah ini sangat berguna untuk otomatisasi manajemen file tersebut.
Dalam kasus penggunaan saya, saya membutuhkan deteksi pengkodean input otomatis dan ada banyak file dengan Windows-1250pengkodean, yang perintahnya file -bi <FILE>kembali charset=unknown-8bit. Ini bukan parameter yang valid untuk iconv.
Jawaban:
Cygwin atau GnuWin32 menyediakan alat Unix seperti
iconv
dandos2unix
(danunix2dos
). Di bawah Unix / Linux / Cygwin, Anda akan ingin menggunakan "windows-1252" sebagai penyandian alih-alih ANSI (lihat di bawah). (Kecuali Anda tahu sistem Anda menggunakan codepage selain 1252 sebagai codepage default, dalam hal ini Anda harus memberi tahu ikonv tentang codepage yang tepat untuk diterjemahkan.)Konversi dari satu (
-f
) ke yang lain (-t
) dengan:Atau dalam bentuk find-all-and-conquer:
Kalau tidak:
Pertanyaan ini telah ditanyakan berkali-kali di situs ini, jadi inilah beberapa informasi tambahan tentang "ANSI". Dalam jawaban untuk pertanyaan terkait, CesarB menyebutkan :
Halaman yang dia tautkan untuk memberikan berita gembira historis ini (dikutip dari Microsoft PDF ) tentang asal-usul CP 1252 dan ISO-8859-1, pengkodean lain yang sering digunakan:
sumber
iconv
tampaknya memotong file hingga 32.768 byte jika melebihi ukuran ini. Ketika dia menulis dalam file yang dia coba baca, dia berhasil melakukan pekerjaan itu jika file itu cukup kecil, kalau tidak, dia akan memotong file itu tanpa peringatan ...dengan PowerShell Anda dapat melakukan sesuatu seperti ini:
sedangkan ENC adalah sesuatu seperti unicode, ascii, utf8, utf32. checkout 'help out-file'.
untuk mengonversi semua file * .txt dalam direktori ke utf8 lakukan sesuatu seperti ini:
yang membuat versi yang dikonversi dari setiap file .txt di DIR2.
EDIT: Untuk mengganti file di semua subdirektori gunakan:
sumber
Halaman Wikipedia pada baris baru memiliki bagian tentang utilitas konversi .
Ini tampaknya taruhan terbaik Anda untuk konversi dengan hanya menggunakan alat yang dikirimkan Windows dengan:
sumber
UTFCast adalah konverter Unicode untuk Windows yang mendukung mode batch. Saya menggunakan versi berbayar dan cukup nyaman dengan itu.
sumber
Oneliner menggunakan find, dengan deteksi otomatis
Pengkodean karakter dari semua file teks yang cocok akan terdeteksi secara otomatis dan semua file teks yang cocok dikonversi ke
utf-8
pengkodean:Untuk melakukan langkah-langkah ini, sub shell
sh
digunakan dengan-exec
, menjalankan satu-kapal dengan-c
bendera, dan melewati nama file sebagai argumen posisi"$1"
dengan-- {}
. Di antara,utf-8
file output dinamai sementaraconverted
.The
find
Perintah ini sangat berguna untuk otomatisasi manajemen file tersebut.Klik di sini untuk lebih
find
berlimpah .sumber
iconv -f original_charset -t utf-8 originalfile > newfile
jalankan perintah di atas untuk loop.
sumber
Gunakan skrip Python ini: https://github.com/goerz/convert_encoding.py Ini berfungsi pada platform apa pun. Membutuhkan Python 2.7.
sumber
Ada
dos2unix
di unix.Ada alat serupa lainnya untuk Windows ( ref lain di sini ).
Bagaimana saya mengkonversi antara file teks Unix dan Windows? punya beberapa trik lagi
sumber
dos2unix
berguna untuk mengubah jeda baris , tetapi OP mencari konversi pengkodean karakter.Anda dapat menggunakan EncodingMaster . Ini gratis, memiliki versi Windows, Linux dan Mac OS X dan berfungsi dengan sangat baik.
sumber
Dalam kasus penggunaan saya, saya membutuhkan deteksi pengkodean input otomatis dan ada banyak file dengan
Windows-1250
pengkodean, yang perintahnyafile -bi <FILE>
kembalicharset=unknown-8bit
. Ini bukan parameter yang valid untukiconv
.Saya mendapatkan hasil terbaik dengan enca .
Konversi semua file dengan ekstensi txt ke utf-8
sumber