Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ubuntu tietokoneissa => Aiheen aloitti: Owdy - 14.07.06 - klo:22.58

Otsikko: ISO-8859-1 -> UTF-8 conversio
Kirjoitti: Owdy - 14.07.06 - klo:22.58
Mulla on kasa tekstitiedostoja jotka haluaisin konvertoida UTF-8 formaattiin. Miten se onnistuis helpoiten?
Otsikko: Re: ISO-8859-1 -> UTF-8 conversio
Kirjoitti: raimo - 15.07.06 - klo:00.14
iconv
iconv --help
man iconv
http://www.gnu.org/software/libiconv/documentation/libiconv/iconv.1.html

Se ei ole ICONv  vaan Iconv ts. ikoneista ei ole kyse vaan koodauksen muuttamisesta jostakin joksikin toiseksi. ;)
Ainakin minulla tuo kyseinen iconv toimii, ellen sitten ole saanut sitä tartuntana jonkun muun asian mukana?

edittivä:
Koodia: [Valitse]
sudo apt-get install libtext-iconv-perl
ellei toimi, mutta taitaa se olla ihan vakiokamaa
Otsikko: Re: ISO-8859-1 -> UTF-8 conversio
Kirjoitti: Owdy - 15.07.06 - klo:00.30
Löysin tälläsen Nautilus scriptin:

Koodia: [Valitse]
#!/bin/bash
#
# File Name Encoding Conversion Script
#
# Use this script to convert file names with special characters
# between Windows-1252 and UTF-8 encoded file systems.
# The script can be easily modified to convert between any
# encoding to any other encoding.
#
# This script is similar to a script already available for the
# KDE desktop.
#
# changeFilenameCode
# http://kubuntu.free.fr/servicemenu/
#
# Original post:
# http://moto.debian.org.tw/viewtopic.php?t=5367
#
# Contributor:
# Adam Kane
# kane.adam@gmail.com
#
# The script has been modified to manage more than one
# file and to specifically convert from windows-1252 to utf-8.
#
# Dependencies : convmv
# http://j3e.de/linux/convmv/

if [ $# -gt 0 ];then
convmv -f ISO-8859-1 -t utf-8 -r --notest "$@"| zenity --progress --pulsate --text="conversion in progress" --auto-close
fi
exit 0
Otsikko: Re: ISO-8859-1 -> UTF-8 conversio
Kirjoitti: Owdy - 16.07.06 - klo:22.56
Löysin tälläsen Nautilus scriptin:


Äh, convmv convertoi tiedoston nimet, ei sisältöä :P

Muoks: toimisko tämä nautilus scriptinä?
Koodia: [Valitse]
#!/bin/sh
# ISO-8859-1 to UTF-8 conversion
iconv --from-code=ISO-8859-1 --to-code=UTF-8
Millä loitsulla näkee tiedoston koodauksen?
Otsikko: Re: ISO-8859-1 -> UTF-8 conversio
Kirjoitti: janne - 16.07.06 - klo:23.08
Muoks: toimisko tämä nautilus scriptinä?
Koodia: [Valitse]
#!/bin/sh
# ISO-8859-1 to UTF-8 conversion
iconv --from-code=ISO-8859-1 --to-code=UTF-8

ei toimi, sillä komennosta puuttuu se tiedosto jolle kyseinen toiminto suoritetaan (siis komennon viimeinen parametri).

Millä loitsulla näkee tiedoston koodauksen?

riippuu vähän mihin käyttöön. file nyt ainakin osaa sen näyttää, niissä tapauksissa joissa se on selvää.
Otsikko: Re: ISO-8859-1 -> UTF-8 conversio
Kirjoitti: Owdy - 16.07.06 - klo:23.09
No osaisitko tehä tosta toimivan? Mulla ei o hajuakaan :)
Otsikko: Re: ISO-8859-1 -> UTF-8 conversio
Kirjoitti: janne - 16.07.06 - klo:23.14
No osaisitko tehä tosta toimivan? Mulla ei o hajuakaan :)

ei siihen tarvitse kuin lukea niitä nautiluksen asettamia ympäristömuuttujia ja loppu on ihan tavallista scriptausta. olisiko tuo nyt sitten vaikka:

Koodia: [Valitse]
#!/bin/sh
# ISO-8859-1 to UTF-8 conversion
for FILE in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
do
    iconv --from-code=ISO-8859-1 --to-code=UTF-8 $FILE
done

täällä on jotain vinkkejä noihin scripteihin:
http://g-scripts.sourceforge.net/

[edit]
niin tuota scriptiä ei kyllä tullut testattua
Otsikko: Re: ISO-8859-1 -> UTF-8 conversio
Kirjoitti: Owdy - 16.07.06 - klo:23.18
Ei se taida toimia. Kun avaan tiedoston Quantassa, se sanoo että se on iso-8859-1
Otsikko: Re: ISO-8859-1 -> UTF-8 conversio
Kirjoitti: janne - 16.07.06 - klo:23.27
Ei se taida toimia. Kun avaan tiedoston Quantassa, se sanoo että se on iso-8859-1

juu ei. nyt kun tarkistin, niin näyttää että tuo hoitaisi muunnoksen siten, että se tulostaa lopputuloksen stdoutiin.
Otsikko: Re: ISO-8859-1 -> UTF-8 conversio
Kirjoitti: Owdy - 16.07.06 - klo:23.30
No miten me saatas siitä toimiva?
Otsikko: Re: ISO-8859-1 -> UTF-8 conversio
Kirjoitti: janne - 16.07.06 - klo:23.53
No miten me saatas siitä toimiva?

no, menisiköhän se sitten recodella?
jos vaikka rivin:
Koodia: [Valitse]
iconv --from-code=ISO-8859-1 --to-code=UTF-8 $FILE
korvaisikin rivillä:
Koodia: [Valitse]
recode Latin1..UTF-8 $FILE
Otsikko: Re: ISO-8859-1 -> UTF-8 conversio
Kirjoitti: Owdy - 17.07.06 - klo:06.04
Toi Quanta näyttää ilmeisesti koodaukseksi sen mikä siihen on oletukseksi laitettu. Millähän sen näkis luotettavasti? File ei näytä sitä.
Otsikko: Re: ISO-8859-1 -> UTF-8 conversio
Kirjoitti: raimo - 17.07.06 - klo:10.37
man iconv !!!  ;D

--output, -o FILE
Specify output file (instead of stdout).

Noin siis output muuksi kuin STDOUT
en tiedä millä sen koodauksen näkee luotettavasti, joten pitää selvitellä asiaa.


Otsikko: Re: ISO-8859-1 -> UTF-8 conversio
Kirjoitti: Melmacian - 17.07.06 - klo:11.57
Toi Quanta näyttää ilmeisesti koodaukseksi sen mikä siihen on oletukseksi laitettu. Millähän sen näkis luotettavasti? File ei näytä sitä.
Käsittääkseni sitä tietoa ei mitenkään liitetä tiedostoihin. Koodausta voidaan vain yrittää arvailla tiedostosta olevista merkeistä. Korjatkaa jos olen väärässä.
Otsikko: Re: ISO-8859-1 -> UTF-8 conversio
Kirjoitti: raimo - 17.07.06 - klo:12.37
Toi Quanta näyttää ilmeisesti koodaukseksi sen mikä siihen on oletukseksi laitettu. Millähän sen näkis luotettavasti? File ei näytä sitä.
Käsittääkseni sitä tietoa ei mitenkään liitetä tiedostoihin. Koodausta voidaan vain yrittää arvailla tiedostosta olevista merkeistä. Korjatkaa jos olen väärässä.
Onneksi ei sentään ihan arvaukseen perustu...
Googleen hassu hakusana BOM, tai mystillinen kirjainsarja EF+BB+BF
http://www.google.com/search?q=EF+BB+BF

Selvennys BOM:sta:
http://www.unicode.org/unicode/faq/utf_bom.html#BOM
Otsikko: Re: ISO-8859-1 -> UTF-8 conversio
Kirjoitti: janne - 17.07.06 - klo:18.30
Käsittääkseni sitä tietoa ei mitenkään liitetä tiedostoihin. Koodausta voidaan vain yrittää arvailla tiedostosta olevista merkeistä. Korjatkaa jos olen väärässä.

tavallinen plain text filu ei kyllä sisällä mitään ylimääräistä tietoa siitä mitä koodausta sitä kirjoitettaessa on käytetty ja (valistuneeksi)arvailuksihan tuo tietty sitten menee.
Otsikko: Re: ISO-8859-1 -> UTF-8 conversio
Kirjoitti: raimo - 17.07.06 - klo:19.31
Tuli väkerrettyä arvailuun pieni apuri.
Saa vapaasti muokata, syödä, myydä, ostaa, tuhota, vaihtaa, jne: siis tuon alla olevan koodin.
Värkki katselee kulloisenkin hakemiston teksti-muotoiset (-T) -tiedostot merkki kerraltaan läpi.
Ja listaa "virheelliset" tiedostot lopuksi.

Koodia: [Valitse]
#!/usr/bin/perl
# IsUTF :: Simple Unicode check [isutf] 170706:raimo ihan ite ;)
# use test files below to test this program, look *1
#
#---- INSTALL:
# wget http://dash.atspace.org/kvaak/isutf.txt
# sudo cp isutf.txt /usr/bin/isutf
# sudo chmod 755 /usr/bin/isutf
#
#---- RUN:
# cd /some/dir
# isutf
#
#---- TEST files *1:
#  OK test:  wget http://www.w3.org/2001/06/utf-8-test/UTF-8-demo.html
# fail test:  wget http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html

use strict;
my ($chr, @fails);

exit print "Unicode check\ncommand: isutf\n",
                 "checks current dir text files\n" if grep/^-h$|^help$/, @ARGV;

my @files = <$ENV{"PWD"}/*>; #all files in current dir

foreach(@files){
  next if !-T $_;            # only TEXT (-T) files
  my $err = 0;
  print "checking: $_ .. ";

   open FILE, "< $_";
    binmode FILE, ":utf8";
    my @data = <FILE>;
   close FILE;
   
  foreach $chr (split //, join('', @data)){
     $err++ if !ord($chr);
   }
   
  push(@fails, "$err $_\n") if $err > 0;    
 print "done\n";             # this file
}

 print "\nfailed files (not valid unicode):\n@fails\n" if @fails;
 print "all files OK\n" if !@fails;

exit;
#

tosin  tyhmänä sitten työntää virheilmoitusta ruudun täydeltä
jos ei mielestään löydä unkoodeja merkkejä. mutta tämä onkin eka perbeta :)
Otsikko: Re: ISO-8859-1 -> UTF-8 conversio
Kirjoitti: Owdy - 17.07.06 - klo:22.05
Mitens tommonen? http://mirror.uta.edu/LDP/HOWTO/Finnish-HOWTO/x246.html
Otsikko: Re: ISO-8859-1 -> UTF-8 conversio
Kirjoitti: janne - 17.07.06 - klo:22.12
Mitens tommonen? http://mirror.uta.edu/LDP/HOWTO/Finnish-HOWTO/x246.html

tuota... enkös minä tuossa jo pari viestiä sitten maininnut asiasta?
Otsikko: Re: ISO-8859-1 -> UTF-8 conversio
Kirjoitti: Owdy - 17.07.06 - klo:22.13
Heh, anteeksi. Pitää varmaan mennä nukkumaan :D