Geriausias būdas konvertuoti tekstinius failus tarp simbolių rinkinių?

Kas yra greičiausias ir paprasčiausias būdas konvertuoti tekstinius failus tarp simbolių rinkinių?

Visų pirma turiu konvertuoti iš UTF-8 į ISO-8859-15 ir atvirkščiai.

Viskas vyksta: vieno eilutės šriftai jūsų mėgstamiausių scenarijų kalba, komandinės eilutės įrankiai ar kitos OS, svetainių ir kt.

Geriausi sprendimai:

Linux / UNIX / OS X / cygwin sistemoje:

  • „Gnu iconv“ , kurį pasiūlė „ Troels Arvin“ , geriausiai naudojamas kaip filtras . Atrodo, kad jis yra universalus. Pavyzdys:

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

    Kaip pažymėjo Benas , yra „ Cheekysoft“ pasiūlytas recode online konverteris ( vadovas ), kuris konvertuoja vieną ar daugiau failų . Pavyzdys:

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

    Tokiu atveju naudojami trumpesni slapyvardžiai:

     $ recode utf8..l9 in.txt 

    Recode taip pat palaiko paviršius, kurie gali būti naudojami konvertuoti tarp skirtingų tipų linijų galų ir kodų:

    LF (Unix) konvertavimas į CR-LF (DOS) eilutes:

     $ recode ../CR-LF in.txt 

    Base64 kodavimo failas:

     $ recode ../Base64 in.txt 

    Taip pat galite juos sujungti.

    Konvertuokite bazinį64 koduotą UTF8 failą su Unix linija, baigiančia Lotynų Lotynų bazinių64 failą su Dos linijos pabaiga:

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

„Windows“ su „ Powershell“ ( Jay Bazouzy ):

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

    (Nėra ISO-8859-15 palaikymo, teigiama, kad palaikomi kodai yra unicode, utf7, utf8, utf32, ascii, bigendianunicode, numatytasis ir oem.)

Keisti

Ar turėtumėte omenyje ISO-8859-1 palaikymą? Naudojant „String“ tai daroma, pavyzdžiui, priešingai

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

Pastaba Galimos sąrašo reikšmės yra „Nežinoma, eilutė, Unikodas, baitas, BigEndianUnicode, UTF8, UTF7, Ascii“.

473
15 сент. nustatė Antti Sykäri 15 sep . 2008-09-15 20:21 '08 at 8:21 pm 2008-09-15 20:21
@ 16 atsakymų

savarankiškas naudingumo metodas

 iconv -f UTF-8 -t ISO-8859-1 in.txt > out.txt 
 -f ENCODING įvesties kodavimą -t ENCODING išvesties kodavimą
204
15 сент. atsakymą pateikė Troels Arvin apie 15 sep . 2008-09-15 20:24 '08 at 8:24 pm 2008-09-15 20:24

Pabandykite VIM

Jei turite vim , galite naudoti:

Neįvertinta kiekvienam kodavimui.

Viskas apie tai yra ta, kad nereikia žinoti originalaus kodavimo.

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

Atminkite, kad ši komanda tiesiogiai pakeičia failą.


Paaiškinimas!

  • + : naudodami vim tiesiogiai įvesdami komandą atidarant failą. Paprastai naudojamas atidaryti failą konkrečioje eilutėje: vim +14 file.txt
  • | : kelių komandų atskyriklis (pvz ; , bash)
  • set nobomb : ne utf-8 specifikacija
  • set fenc=utf8 : nustatyti naują kodavimą utf-8 doc nuorodai
  • x : išsaugokite ir uždarykite failą
  • filename.txt : failo kelias
  • " : čia nurodomi dėl vamzdžių. (kitaip bash juos naudos kaip pagrindinį vamzdį)
68
30 сент. Atsakymas pateikiamas Boop 30 rugsėjo. 2015-09-30 11:41 '15 , 11:41 am 2015-09-30 11:41

„Linux“ galite naudoti labai galingą komandų atkūrimą, kad bandytumėte konvertuoti tarp skirtingų kodų, taip pat bet kokias problemas, susijusias su linijos užbaigimu. recode -l parodys visus formatus ir koduotes, kurias įrankis gali konvertuoti tarp. Tai tikriausiai bus labai ilgas sąrašas.

32
15 сент. Atsakymą pateikė Cheekysoft 15 rugsėjis. 2008-09-15 20:24 '08 at 8:24 pm 2008-09-15 20:24

iconv (1)

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

Daugelyje kalbų taip pat yra piktogramos.

19
15 сент. Daniel Papasian atsakymas, pateiktas rugsėjo 15 d 2008-09-15 20:23 '08 at 8:23 pm 2008-09-15 20:23
 Get-Content -Encoding UTF8 FILE-UTF8.TXT | Out-File -Encoding UTF7 FILE-UTF7.TXT 

Trumpiausia versija, jei galite manyti, kad įvesta specifikacija yra teisinga:

 gc FILE.TXT | Out-File -en utf7 file-utf7.txt 
19
15 сент. Atsakymą pateikė Jay Bazuzi 15 rugsėjis. 2008-09-15 20:29 '08 at 8:29 pm 2008-09-15 20:29

Pabandykite piktogramą „Bash“ funkcija

Aš įdėjau į .bashrc :

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

.. kad galėtumėte konvertuoti failus taip:

 utf8 MyClass.java 
15
06 дек. atsakymas į Arne Evertsson 06 d. 2011-12-06 17:43 '11 at 17:43 pm 2011-12-06 17:43

Išbandykite „Notepad ++“

Windows sistemoje galėjau naudoti „Notepad ++“ konvertuoti iš ISO-8859-1 į UTF-8 . Spustelėkite "Encoding" ir tada "Convert to UTF-8" .

13
07 июня '12 в 17:30 2012-06-07 17:30 atsakymą pateikė Jeremy Glover birželio 12 d. 12 val

„Oneliner“, naudojant automatinį aptikimą

Visų atitinkamų tekstinių failų simbolių kodavimas aptinkamas automatiškai, o visi atitinkami teksto failai konvertuojami į utf-8 kodavimą:

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

Kad atliktumėte šiuos veiksmus, -exec sh naudojamas su -exec , prasideda viena eilutė su -c vėliava ir perduoda failo pavadinimą kaip pozicijos argumentą "$1" su -- {} . Tuo tarpu išėjimo utf-8 failas laikinai converted .

Jei file -bi reiškia:

  • -b, -b vagis
    Neįtraukite failų pavadinimų į išvesties linijas (trumpas režimas).

  • -i, --mime
    Sukelia failo komandą spausdinti MIME tipo eilutes, o ne tradicines žmogaus skaitymas. Taigi jis gali pasakyti „text / plain; charset = us-ascii, o ne„ ASCII “tekstas.

find labai naudinga automatizuojant failų valdymą.

Jei find daugiau find spustelėkite čia.

9
28 авг. atsakymas, kurį pateikė Serge Stroobandt 28 rug . 2016-08-28 22:46 '16 at 22:46 pm 2016-08-28 22:46

PHP piktograma ()

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

4
17 сент. Atsakymą pateikė vartotojo15096 17 sep . 2008-09-17 09:18 '08 at 9:18 2008-09-17 09:18

DOS / Windows: naudokite kodo puslapį

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

chcp komandą galima naudoti norint pakeisti kodo puslapį. 65001 kodas yra „Microsoft“ pavadinimas „UTF-8“. Įdiegus kodo puslapį, iš šių komandų sukurta išvestis turės kodo puslapį.

2
27 июня '17 в 22:33 2017-06-27 22:33 atsakymą pateikė lalthomas birželio 27 d. 17, 22:33 2017-06-27 22:33

„Yudit“ redaktorius palaiko ir konvertuoja tarp daugelio skirtingų teksto kodų, veikia „Linux“, „Windows“, „Mac“ ir kt.

-Adam

1
15 сент. atsakymą pateikė Adam Davis rugsėjo 15 d 2008-09-15 20:25 '08 at 8:25 pm 2008-09-15 20:25

Naudokite šį „Python“ scenarijų: https://github.com/goerz/convert_encoding.py Dirba bet kurioje platformoje. Reikalingas „Python“ 2.7.

0
01 июля '18 в 13:17 2018-07-01 13:17 atsakymą pateikė kinORnirvana liepos 1 d. 18 d. 1:17 val. 2018-07-01 13:17

Mano mėgstamiausia priemonė yra „Jedit“ („Java“ pagrindu sukurtas teksto redaktorius), kuris turi dvi labai patogias funkcijas:

  • Vienas, kuris leidžia vartotojui perkelti tekstą kitokiu kodavimu (ir tokiu būdu vizualiai kontroliuoti rezultatą)
  • Kitas, leidžiantis vartotojui prieš išsaugant aiškiai pasirinkti kodavimą (ir eilutės pabaigą)
0
17 сент. atsakymas pateikiamas 17 sek . 2018-09-17 14:08 '18, 14:08 val. 2018-09-17 14:08

rašyti savybių failą (java) paprastai naudoju tai linux (mėtų ir ubuntu paskirstymo):

 $ native2ascii filename.properties 

Pavyzdžiui:

 $ 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: įvedžiau „Execution“ numerį vieną / du portugose, kad priverstumėte specialius simbolius.

Mano atveju, pirmą kartą gavau šį pranešimą:

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

Kai įdiegiau pirmąją parinktį (gcj-5-jdk), problema buvo baigta.

Tikiuosi, kad tai padės kam nors.

0
28 нояб. Atsakymą pateikė Maciel Bombonato lapkričio 28 d. 2016-11-28 22:32 '16 at 22:32 pm 2016-11-28 22:32

Su rubinu:

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

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

0
26 июня '18 в 9:25 2018-06-26 09:25 Atsakymą duos Dorianas birželio 26 d., 18 val. 9:25 2018-06-26 09:25

Kaip aprašyta Kaip nustatyti failo simbolių kodavimą? Synalyze It! leidžia lengvai konvertuoti į OS X tarp visų ICU bibliotekos palaikomų kodų.

Be to, galite rodyti kelis failo baitus, išverstus į Unicode iš visų kodų, kad galėtumėte greitai pamatyti, kas teisinga jūsų failui.

-1
26 июня '13 в 22:42 2013-06-26 22:42 atsakymas pateikiamas birželio 6 d., 13 d., 10:42 val. 2013-06-26 22:42

Kiti klausimai apie etiketes arba Užduoti klausimą