web-gelistirme-sc.com

Metin dosyalarını karakter kümeleri arasında dönüştürmenin en iyi yolu?

Metin dosyalarını karakter kümeleri arasında dönüştürmek için en hızlı, en kolay araç veya yöntem nedir?

Özellikle, UTF-8'den ISO-8859-15'e ve tam tersine dönüştürmem gerekiyor.

Her şey yolunda gider: En sevdiğiniz kodlama dilinde tek satır, komut satırı araçları veya işletim sistemi, web siteleri vb. İçin diğer yardımcı programlar.

Şimdiye kadarki en iyi çözümler:

Linux/UNIX/OS X/cygwin'de:

  • Gnu iconvTroels Arvin tarafından önerilen _, en iyi şekilde kullanılır filtre olarak. Evrensel olarak erişilebilir görünüyor. Örnek:

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

    Ben ile işaret edildiği gibi, bir iconv kullanarak çevrimiçi dönüştürücü vardır.

  • Gnu recode ( manuel ) Cheekysoft tarafından önerildi - dönüştürülecek bir ya da birkaç dosya yerinde. Örnek:

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

    Bu, daha kısa takma adlar kullanır:

    $ recode utf8..l9 in.txt
    

    Recode ayrıca farklı satır sonu türleri ve kodlamalar arasında dönüştürmek için kullanılabilen surface komutunu da destekler:

    Yeni satırları LF (Unix) 'den CR-LF'ye (DOS) dönüştürün:

    $ recode ../CR-LF in.txt
    

    Base64 kodlama dosyası:

    $ recode ../Base64 in.txt
    

    Onları da birleştirebilirsiniz.

    Unix satır sonlarına sahip bir Base64 kodlu UTF8 dosyasını Dos satır sonlarına sahip Base64 kodlu Latin 1 dosyasına dönüştürün:

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

Powershell ( Jay Bazuzi ) içeren Windows'ta:

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

    (ISO-8859-15 desteği yok; ancak desteklenen karakter setlerinin unicode, utf7, utf8, utf32, ascii, bigendianunicode, default ve oem olduğunu söylüyor.)

Düzenle

İso-8859-1 desteğini mi kastediyorsunuz? "String" kullanmak, örneğin; tam tersi için

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

Not: Olası numaralandırma değerleri "Bilinmeyen, Dize, Unicode, Bayt, BigEndianUnicode, UTF8, UTF7, Ascii" dir.

495
Antti Kissaniemi

Bağımsız hizmet programı yaklaşım

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

Bu argümanların ikisini de belirtmeniz gerekmez. Genellikle UTF-8 olan geçerli yerel ayarınıza varsayılan olarak kullanılırlar.

214
Troels Arvin

VIM'i deneyin

vim'nız varsa bunu kullanabilirsiniz:

Her kodlama için test edilmemiştir.

Bunun en güzel tarafı kaynak kodlamasını bilmek zorunda olmamanız.

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

Bu komutun doğrudan dosyayı değiştirdiğini unutmayın.


Açıklama kısmı!

  1. +: Bir dosyayı açarken doğrudan komutu girmek için vim tarafından kullanılır. Genellikle bir dosyayı belirli bir satırda açmak için kullanılır: vim +14 file.txt
  2. |: Birden çok komutun ayırıcısı (bash'ta ; gibi)
  3. set nobomb: hayır utf-8 BOM
  4. set fenc=utf8: Yeni kodlamayı utf-8 doc link olarak ayarlayın
  5. x: Dosyayı kaydet ve kapat
  6. filename.txt: dosyanın yolu
  7. ": Borular nedeniyle tırnaklar burada. (aksi takdirde bash bunları bash borusu olarak kullanır)
79
Boop

Linux altında, farklı karakter kümeleri ile herhangi bir satır sonunu çözme sorunu arasında geçiş yapmak için çok güçlü recode komutunu kullanabilirsiniz. recode -l , aracın arasında dönüştürebileceği tüm biçimleri ve kodlamaları gösterir. ÇOK uzun bir liste olması muhtemeldir.

35
Cheekysoft

iconv (1)

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

Ayrıca birçok dilde iconv tabanlı araçlar var.

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

En kısa sürüm, BOM girişinin doğru olduğunu kabul ederseniz

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

İconv Bash işlevini deneyin

Bunu .bashrc içine koydum:

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

.. gibi dosyaları dönüştürebilmek için:

utf8 MyClass.Java
14
Arne Evertsson

Not Defteri'ni deneyin ++

Windows'ta ISO-8859-1 - UTF-8 dönüşümlerini yapmak için Notepad ++ programını kullanabildim. "Encoding" ve ardından "Convert to UTF-8" öğesini tıklayın.

13
Jeremy Glover

Oneliner Find kullanarak otomatik algılama

Tüm eşleşen metin dosyalarının karakter kodlamasıotomatik olarak algılanır ve eşleşen tüm metin dosyaları utf-8 kodlamasına dönüştürülür:

$ 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"' -- {} \;

Bu adımları gerçekleştirmek için, -exec ile bir alt Shell sh kullanılır, -c bayrağıyla bir astarı çalıştırın ve dosya adını "$1" ile -- {} konum argümanı olarak geçirin. Arada, utf-8 çıktı dosyası geçici olarak converted olarak adlandırılır.

file -bi şu anlama gelir:

  • -b, - kısa
    Dosya adlarını çıktı satırlarına hazırlamayın (kısa mod).

  • -i, --mime
    File komutunun daha geleneksel insan tarafından okunabilenlerden ziyade mime tipi dizgileri çıkarmasına neden olur. Böylece ‘metin/düz; charset = “ASCII metni” yerine us-ascii ”.

find komutu, bu tür dosya yönetimi otomasyonu için çok kullanışlıdır.

Devamı find galore için buraya tıklayın.

9
Serge Stroobandt

PHP iconv ()

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

3
user15096

DOS/Windows: Kod sayfasını kullanın

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

Komut chcp, kod sayfasını değiştirmek için kullanılabilir. Sayfa 65001, UTF-8 için Microsoft adıdır. Kod sayfasını ayarladıktan sonra, aşağıdaki komutlar tarafından üretilen çıktı kod sayfası ayarında olacaktır.

2
lalthomas

normalde özellikler dosyasını (Java) yazmak için bunu linux'da kullanıyorum (nane ve ubuntu dağılımları):

$ native2ascii filename.properties

Örneğin:

$ 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

Not: Özel karakterleri zorlamak için bir ya da iki numaralı infazın portekiz yazdığını yazdım.

Benim durumumda, ilk çalıştırmada şu mesajı aldım:

$ 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>

İlk seçeneği kurduğumda (gcj-5-jdk) sorun çözüldü.

Umarım bu birine yardım eder.

1
Maciel Bombonato

Bunun için en sevdiğim araç, iki çok kullanışlı özelliğe sahip olan Jedit (Java tabanlı bir metin editörü).

  • Kullanıcının bir metni farklı bir kodlamayla yeniden yüklemesini sağlayan (ve sonucu görsel olarak kontrol eden)
  • Kullanıcının kaydetmeden önce kodlamayı (ve satır karakterinin sonunu) açıkça seçmesini sağlayan bir diğeri
0
yota

Bu Python betiğini kullanın: https://github.com/goerz/convert_encoding.py Herhangi bir platformda çalışır. Python 2.7 gerektirir.

0
kinORnirvana

Ruby ile:

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

Kaynak: https://robots.thoughtbot.com/fight-back-utf-8-invalid-byte-sequences

0
Dorian

Yüklenen dosyanın kodlamasını IntelliJ IDEA IDE içinde, mevcut karakter setinin gösterildiği durum çubuğunun (altta) sağındaki değiştirin. Yeniden Yükle veya Dönüştür komutunu kullanır, Dönüştür'ü kullanır. Orijinal dosyayı önceden yedeklediğinizden emin olun.

0