it-swarm-id.com

Cara terbaik untuk mengonversi file teks antar set karakter?

Apa alat atau metode tercepat, termudah untuk mengonversi file teks antara set karakter?

Secara khusus, saya perlu mengkonversi dari UTF-8 ke ISO-8859-15 dan sebaliknya.

Semuanya berjalan: satu-baris dalam bahasa skrip favorit Anda, alat baris perintah atau utilitas lain untuk OS, situs web, dll.

Solusi terbaik sejauh ini:

Di Linux/UNIX/OS X/cygwin:

  • Gnu iconv disarankan oleh Troels Arvin paling baik digunakan sebagai filter. Tampaknya tersedia secara universal. Contoh:

    $ iconv -f UTF-8 -t ISO-8859-15 in.txt > out.txt
    

    Seperti yang ditunjukkan oleh Ben , ada konverter online menggunakan iconv .

  • Gnu recode ( manual ) disarankan oleh Cheekysoft akan mengonversi satu atau beberapa file di tempat. Contoh:

    $ recode UTF8..ISO-8859-15 in.txt
    

    Yang ini menggunakan alias lebih pendek:

    $ recode utf8..l9 in.txt
    

    Recode juga mendukung permukaan yang dapat digunakan untuk mengkonversi antara berbagai jenis dan penyandian akhir baris:

    Ubah baris baru dari LF (Unix) ke CR-LF (DOS):

    $ recode ../CR-LF in.txt
    

    File encode Base64:

    $ recode ../Base64 in.txt
    

    Anda juga bisa menggabungkannya.

    Mengonversi file UTF8 yang disandikan Base64 dengan ujung garis Unix ke file Latin 1 yang disandikan Base64 dengan ujung garis Dos:

    $ recode utf8/Base64..l1/CR-LF/Base64 file.txt
    

Di Windows dengan Powershell ( Jay Bazuzi ): 

  • PS C:\> gc -en utf8 in.txt | Out-File -en ascii out.txt

    (Tidak ada dukungan ISO-8859-15; ia mengatakan bahwa rangkaian karakter yang didukung adalah unicode, utf7, utf8, utf32, ascii, bigendianunicode, default, dan oem.)

Edit

Apakah maksud Anda dukungan iso-8859-1? Menggunakan "String" melakukan hal ini, mis. untuk sebaliknya

gc -en string in.txt | Out-File -en utf8 out.txt

Catatan: Nilai enumerasi yang mungkin adalah "Tidak Diketahui, String, Unicode, Byte, BigEndianUnicode, UTF8, UTF7, Ascii".

486
Antti Kissaniemi

Utilitas yang berdiri sendiri pendekatan

iconv -f ISO-8859-1 -t UTF-8 in.txt > out.txt
-f ENCODING  the encoding of the input
-t ENCODING  the encoding of the output

Anda tidak harus menentukan argumen ini. Mereka akan default ke lokal Anda saat ini, yang biasanya UTF-8.

214
Troels Arvin

Coba VIM

Jika Anda memiliki vim Anda dapat menggunakan ini:

Tidak diuji untuk setiap penyandian.

Bagian yang keren tentang ini adalah Anda tidak perlu tahu sumber penyandian

vim +"set nobomb | set fenc=utf8 | x" filename.txt

Perlu diketahui bahwa perintah ini memodifikasi file secara langsung


Bagian penjelasan!

  1. +: Digunakan oleh vim untuk langsung memasukkan perintah saat membuka file. Biasanya digunakan untuk membuka file pada baris tertentu: vim +14 file.txt
  2. |: Pemisah beberapa perintah (seperti ; dalam bash)
  3. set nobomb: tidak ada BOM utf-8
  4. set fenc=utf8: Setel penyandian baru ke utf-8 tautan doc
  5. x: Simpan dan tutup file
  6. filename.txt: path ke file
  7. ": qotes ada di sini karena pipa. (Jika tidak, bash akan menggunakannya sebagai pipa bash)
79
Boop

Di Linux, Anda dapat menggunakan perintah recode yang sangat kuat untuk mencoba dan mengonversi antara rangkaian karakter yang berbeda serta masalah garis akhir. recode -l akan menunjukkan kepada Anda semua format dan penyandian yang dapat dikonversi oleh alat. Ini mungkin daftar yang SANGAT panjang.

35
Cheekysoft

iconv (1)

iconv -f FROM-ENCODING -t TO-ENCODING file.txt

Juga ada alat berbasis iconv dalam banyak bahasa.

19
Daniel Papasian
Get-Content -Encoding UTF8 FILE-UTF8.TXT | Out-File -Encoding UTF7 FILE-UTF7.TXT

Versi terpendek, jika Anda dapat mengasumsikan bahwa BOM input benar:

gc FILE.TXT | Out-File -en utf7 file-utf7.txt
19
Jay Bazuzi

Coba fungsi ikonv Bash

Saya telah memasukkan ini ke .bashrc:

utf8()
{
    iconv -f ISO-8859-1 -t UTF-8 $1 > $1.tmp
    rm $1
    mv $1.tmp $1
}

..untuk dapat mengonversi file seperti:

utf8 MyClass.Java
14
Arne Evertsson

Coba Notepad ++

Pada Windows saya dapat menggunakan Notepad ++ untuk melakukan konversi dari ISO-8859-1 ke UTF-8 . Klik "Encoding" lalu "Convert to UTF-8".

13
Jeremy Glover

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 pengodean utf-8:

$ find . -type f -iname *.txt -exec sh -c 'iconv -f $(file -bi "$1" |sed -e "s/.*[ ]charset=//") -t utf-8 -o converted "$1" && mv converted "$1"' -- {} \;

Untuk melakukan langkah-langkah ini, sub Shell sh digunakan dengan -exec, menjalankan satu baris dengan bendera -c, dan meneruskan nama file sebagai argumen posisi "$1" dengan -- {} Di antaranya, file output utf-8 untuk sementara bernama converted.

Dimana file -bi berarti:

  • -b, --brief
    Jangan menambahkan nama file ke saluran keluaran (mode singkat).

  • -i, --mime
    Menyebabkan perintah file untuk menampilkan string tipe mime daripada yang lebih mudah dibaca manusia. Jadi bisa dikatakan ‘teks/polos; charset = us-ascii 'daripada “teks ASCII”.

Perintah find sangat berguna untuk otomatisasi manajemen file seperti itu.

Klik di sini untuk selengkapnya find galore .

9
Serge Stroobandt

PHP iconv ()

iconv("UTF-8", "ISO-8859-15", $input);

3
user15096

DOS/Windows: gunakan halaman Kode

chcp 65001>NUL
type ascii.txt > unicode.txt

Perintah chcp dapat digunakan untuk mengubah halaman kode. Halaman kode 65001 adalah nama Microsoft untuk UTF-8. Setelah mengatur halaman kode, output yang dihasilkan oleh perintah berikut akan menjadi set halaman kode.

2
lalthomas

untuk menulis file properties (Java) biasanya saya menggunakan ini di linux (distribusi mint dan ubuntu):

$ native2ascii filename.properties

Sebagai contoh:

$ cat test.properties 
first=Execução número um
second=Execução número dois

$ native2ascii test.properties 
first=Execu\u00e7\u00e3o n\u00famero um
second=Execu\u00e7\u00e3o n\u00famero dois

PS: Saya menulis Eksekusi nomor satu/dua di portugues untuk memaksa karakter khusus.

Dalam kasus saya, dalam eksekusi pertama saya menerima pesan ini:

$ native2ascii teste.txt 
The program 'native2ascii' can be found in the following packages:
 * gcj-5-jdk
 * openjdk-8-jdk-headless
 * gcj-4.8-jdk
 * gcj-4.9-jdk
Try: Sudo apt install <selected package>

Ketika saya menginstal opsi pertama (gcj-5-jdk) masalahnya selesai.

Saya harap ini membantu seseorang.

1
Maciel Bombonato

Alat favorit saya untuk ini adalah Jedit (editor teks berbasis Java) yang memiliki dua fitur yang sangat nyaman:

  • Yang memungkinkan pengguna memuat ulang teks dengan penyandian yang berbeda (dan, dengan demikian, mengontrol hasil secara visual)
  • Satu lagi yang memungkinkan pengguna untuk secara eksplisit memilih pengkodean (dan akhir baris karakter) sebelum menyimpan
0
yota

Gunakan skrip Python ini: https://github.com/goerz/convert_encoding.py Bekerja pada platform apa pun. Membutuhkan Python 2.7.

0
kinORnirvana

Dengan Ruby:

Ruby -e "File.write('output.txt', File.read('input.txt').encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: ''))"

Sumber: https://robots.thoughtbot.com/fight-back-utf-8-invalid-byte- berikutnyaences

0
Dorian

Cukup ubah penyandian file yang dimuat di IntelliJ IDEA IDE, di sebelah kanan bilah status (bawah), di mana charset saat ini ditunjukkan. Ini meminta untuk Muat Ulang atau Konversi, gunakan Konversi. Pastikan Anda membuat cadangan file asli terlebih dahulu.

0