it-swarm-eu.dev

Nejlepší způsob, jak převést textové soubory mezi znakovými sadami?

Jaký je nejrychlejší, nejjednodušší nástroj nebo metoda pro převod textových souborů mezi znakovými sadami?

Konkrétně musím převést z UTF-8 na ISO-8859-15 a naopak.

Vše jde: jednořádkové ve vašem oblíbeném skriptovacím jazyce, nástroje příkazového řádku nebo jiné nástroje pro OS, webové stránky atd.

Nejlepší řešení:

V systému Linux/UNIX/OS X/cygwin:

  • Gnu iconv navrhl Troels Arvin je nejlepší použít jako filtr. Zdá se, že je univerzálně dostupný. Příklad:

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

    Jak uvedl Ben , existuje online převodník s ikonou .

  • Gnu recode ( manual ) navrhl Cheekysoft bude konvertovat jeden nebo několik souborů na místě. Příklad:

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

    Ten používá kratší aliasy:

    $ recode utf8..l9 in.txt
    

    Recode také podporuje plochy, které lze použít k převodu mezi různými typy zakončení řádků a kódováním:

    Převést nové řádky z LF (Unix) na CR-LF (DOS):

    $ recode ../CR-LF in.txt
    

    Soubor kódování Base64:

    $ recode ../Base64 in.txt
    

    Můžete je také kombinovat.

    Převést soubor UTF8 kódovaný kódem Base64 s koncovkami řádků Unix do souboru Latin 1 s kódováním Base64 s koncovkami řádků Dos:

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

Na Windows s Powershell ( Jay Bazuzi ): 

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

    (No ISO-8859-15 podpora i když; říká, že podporované znaky jsou unicode, utf7, utf8, utf32, ascii, bigendianunicode, výchozí a oem.)

Upravit

Myslíte si iso-8859-1 support? Použitím "String" to např. pro naopak

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

Poznámka: Možné hodnoty výčtu jsou "Neznámý, String, Unicode, Byte, BigEndianUnicode, UTF8, UTF7, Ascii".

486
Antti Kissaniemi

Samostatný nástroj přístup

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

Nemusíte specifikovat žádný z těchto argumentů. Výchozí nastavení je vaše aktuální národní prostředí, což je obvykle UTF-8.

214
Troels Arvin

Zkuste VIM

Pokud máte vim, můžete použít toto:

Není testováno pro každé kódování.

Cool část o tom je, že nemusíte znát zdrojové kódování

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

Uvědomte si, že tento příkaz upravte přímo soubor


Vysvětlení části!

  1. +: Používá se vim k přímému zadání příkazu při otevírání souboru. Obvykle se používá k otevření souboru na určitém řádku: vim +14 file.txt
  2. |: Oddělovač více příkazů (jako ; v bash)
  3. set nobomb: no utf-8 kusovník
  4. set fenc=utf8: Nastavit nové kódování na utf-8 doc odkaz
  5. x: Uložení a zavření souboru
  6. filename.txt: cesta k souboru
  7. ": qotes jsou zde kvůli trubkám. (jinak je bash použije jako bash potrubí)
79
Boop

Pod Linuxem můžete použít velmi silný recode příkaz k pokusu o konverzi mezi různými znakovými sadami, stejně jako problémy s koncovkami. recode -l vám ukáže všechny formáty a kódování, které nástroj může převést. Je to pravděpodobně velmi dlouhý seznam.

35
Cheekysoft

iconv (1)

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

V mnoha jazycích existují také nástroje založené na ikonách.

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

Nejkratší verze, pokud lze předpokládat, že vstupní kusovník je správný:

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

Vyzkoušejte funkci Bash

Dala jsem to do .bashrc:

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

.. aby bylo možné převádět soubory takto:

utf8 MyClass.Java
14
Arne Evertsson

Vyzkoušejte Notepad ++

V systému Windows jsem byl schopen použít program Poznámkový blok ++ k provedení převodu z ISO-8859-1 na UTF-8 . Klikněte na "Encoding" a poté na "Convert to UTF-8".

13
Jeremy Glover

Oneliner s použitím find, s automatickou detekcí

Kódování znaků všech odpovídajících textových souborů je automaticky detekováno a všechny odpovídající textové soubory jsou převedeny na kódování 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"' -- {} \;

K provedení těchto kroků se používá subshell sh s -exec, spuštěním jednořádkové s příznakem -c a předáním souboru jako pozičního argumentu "$1" s -- {}. Výstupní soubor utf-8 je dočasně pojmenován converted.

Odkud file -bi znamená:

  • -b, -brief
    Nepředpínejte názvy souborů na výstupní řádky (krátký režim).

  • -i, --mime
    Způsobí, že příkaz k výstupu namísto tradičních lidsky čitelných bude vydávat řetězce typu mime. Může tedy říci „text/prostý; charset = us-ascii “místo textu„ ASCII “.

Příkaz find je velmi užitečný pro tuto automatizaci správy souborů.

Klikněte zde pro více find galore .

9
Serge Stroobandt

PHP iconv ()

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

3
user15096

DOS/Windows: použití Kódová stránka

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

Příkaz chcp lze použít ke změně kódové stránky. Kódová stránka 65001 je název společnosti Microsoft pro UTF-8. Po nastavení kódové stránky bude výstup generovaný následujícími příkazy nastaven na kódovou stránku.

2
lalthomas

psát soubor vlastností (Java) normálně to používám v linuxu (mint a ubuntu distribuce):

$ native2ascii filename.properties

Například:

$ 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: Napsal jsem Execution number one/two v portugalštině, abych vynucoval speciální znaky.

V mém případě jsem při prvním provedení obdržel tuto zprávu:

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

Když jsem nainstaloval první možnost (gcj-5-jdk), problém byl ukončen.

Doufám, že to někomu pomůže.

1
Maciel Bombonato

Můj oblíbený nástroj je Jedit (textový editor Java), který má dvě velmi výhodné funkce:

  • Jeden, který umožňuje uživateli znovu načíst text s jiným kódováním (a jako takový, aby vizuálně kontroloval výsledek)
  • Další, která umožňuje uživateli explicitně zvolit kódování (a konec řádku char) před uložením
0
yota

Použijte tento skript Python: https://github.com/goerz/convert_encoding.py Pracuje na libovolné platformě. Vyžaduje Python 2.7.

0
kinORnirvana

S Ruby:

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

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

0
Dorian

Jednoduše změňte kódování načteného souboru v IntelliJ IDEA IDE, vpravo od stavového řádku (dole), kde je zobrazena aktuální znaková sada. Vyzve k opětovnému načtení nebo převodu pomocí příkazu Převést. Ujistěte se, že jste zálohovali původní soubor předem.

0