Sida 1 av 1
UTF8 -> ANSI mass-konvertering?
Postat: 22 jan 2008, 13:38
av Jimbo
Jag har ett helt gäng med filer i utf8 som jag skulle behöva konvertera om till ansi för att de ska visas rätt när jag trycker ut dom med apache.
Går detta att göra genom något kommando eller måste jag skriva/tanka hem något program?
Nuvarande lösning är att tanka över filerna till en windows-dator och sedan öppna dom i notepad och spara om dom som ett ansi-dokument och sedan flytta tillbaka dom.
tack för all hjälp jag kan få.
mvh, Jim.
SV: UTF8 -> ANSI mass-konvertering?
Postat: 22 jan 2008, 13:45
av andol
Givet att du inte har något emot terminalen så är recode ett trevligt program/kommando för att konvertera teckenkodningen i (text)filer. Det ligger inte installerat som default, men finns att hämta via synaptic/apt-get.
En alternativ lösning kanske annars skulle kunna vara att låta Apache servera filerna direkt som UTF-8?
SV: UTF8 -> ANSI mass-konvertering?
Postat: 22 jan 2008, 13:47
av mcNisse
jag har använd ett program recode. Det är bara använda find.
Kod: Markera allt
find . -type f -print0 | xargs -0 recode UTF-8...ISO-8859-1
Dock tycker jag att det är en bakvänd lösning. Apache borde klara av att visa filer kodade i UTF-8....
SV: UTF8 -> ANSI mass-konvertering?
Postat: 23 jan 2008, 00:34
av Jimbo
tack för kommandot mcNisse, en fråga bara, visst är det begränsat till den aktiva mappen man är i så att säga.
jo andol, jag vet att det är lite bakvänt, men när apache ska visa en fil som innehåller åäö samt är kodat i utf8 fungerar det helt enkelt inte. jag får bara en massa fyrkanter och konstiga krumilurer.
SV: UTF8 -> ANSI mass-konvertering?
Postat: 23 jan 2008, 00:39
av mcNisse
Det stämmer bra, "." syftar på aktuell katalog.
SV: UTF8 -> ANSI mass-konvertering?
Postat: 23 jan 2008, 01:49
av Jimbo
Tusen tack för de extremt snabba svaren!
SV: UTF8 -> ANSI mass-konvertering?
Postat: 23 jan 2008, 02:06
av andol
Jimbo skrev:
jo andol, jag vet att det är lite bakvänt, men när apache ska visa en fil som innehåller åäö samt är kodat i utf8 fungerar det helt enkelt inte. jag får bara en massa fyrkanter och konstiga krumilurer.
Gissningsvis beror detta på att Apache talar om för webbläsaren att den skickar information i iso-8859-1 varpå webbläsaren försöker tolka texten därefter. Hurtillvida så är fallet kan man till exempel kolla genom att begära upp Sidinfo i Firefox (ctrl + i) och se vad den anger för kodning.
Är det förresten din Apache eller någonannans?
Vad gäller mcNisses kommandorad så är den en väldigt smidig lösning om man behöver traversera ett helt filträd med underkataloger och allt. Ligger däremot alla filerna i samma folder kommer man lite lättare undan med exempelvis: recode utf-8..iso-8859-1 *.txt (alternativt annan filmask)
SV: UTF8 -> ANSI mass-konvertering?
Postat: 23 jan 2008, 14:26
av Jimbo
När jag använder kommandot så får jag följande fel:
find . -type f -print0 | xargs -0 recode UTF-8..ISO-8859-1
recode: ./css.css failed: Invalid input in step `UTF-8..ISO-8859-1'
Sen blir det samma fel på precis alla filer. Det konstiga är att det löste problemet.
Är det så att om filerna redan är i ISO-standarden så blir det fel?
Finns det kanske något sätt att ta reda på vad det är i för standard?
SV: UTF8 -> ANSI mass-konvertering?
Postat: 23 jan 2008, 14:52
av mcNisse
Du har kanske bara två punter, det ska vara tre?
SV: UTF8 -> ANSI mass-konvertering?
Postat: 23 jan 2008, 17:15
av Jimbo
mcNisse skrev:
Du har kanske bara två punter, det ska vara tre?
Testat med både tre och två punkter, får båda gångerna felmeddelandet:
recode: ./test2.php failed: Invalid input in step `UTF-8..ISO-8859-1'
SV: UTF8 -> ANSI mass-konvertering?
Postat: 23 jan 2008, 17:38
av mcNisse
Du måste nog kontrollera vad du har för kodning i filen. Öppna filen i en editor som klarar att byta teckenkodning och se om du kan byta till en som visar innehållet på ett korrekt sätt. Dessa editorer vet jag klarar av det emacs, kate, kwrite.
Det går inte att köra recode två gånger på samma fil med samma argument... det kan bli kaos.
SV: UTF8 -> ANSI mass-konvertering?
Postat: 24 jan 2008, 00:19
av KiviE
För att visa hemsidorna i rätt teckenkodning lägg till i head på hemsidan.
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
</head>
Skulle starkt rekommendera att alltid skriva ut i head vilken teckenkodning som ska användas.
SV: UTF8 -> ANSI mass-konvertering?
Postat: 24 jan 2008, 00:48
av Jimbo
mcNisse skrev:
Du måste nog kontrollera vad du har för kodning i filen. Öppna filen i en editor som klarar att byta teckenkodning och se om du kan byta till en som visar innehållet på ett korrekt sätt. Dessa editorer vet jag klarar av det emacs, kate, kwrite.
Det går inte att köra recode två gånger på samma fil med samma argument... det kan bli kaos.
Det är precis det jag vill göra men eftersom jag inte har något GUI till servern så blir det lite svårt.
Finns det inget kommando som visar vilken kodningen en fil har?
SV: UTF8 -> ANSI mass-konvertering?
Postat: 24 jan 2008, 01:09
av andol
KiviE skrev:
För att visa hemsidorna i rätt teckenkodning lägg till i head på hemsidan.
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
</head>
Skulle starkt rekommendera att alltid skriva ut i head vilken teckenkodning som ska användas.
Det där är en lösning som inte nödvändigtvis ger sådär överdrivet mycket resultat. Givet att webbservern skickar motsvarande info som http-header prioriteras det värdet i princip alltid framför vad som står i html-huvudet. Däremot så är det förstås för ordningens skull snyggt att ha med.
http-headerns för teckenkodning sätts på lämplig plats i apacheconfen (virtualhost, directory, etc) alternativt i en .htaccess om sådan delegering tillåts.
AddDefaultCharset UTF-8
SV: UTF8 -> ANSI mass-konvertering?
Postat: 24 jan 2008, 01:16
av andol
Jimbo skrev:
Finns det inget kommando som visar vilken kodningen en fil har?
Njae
Då det i en textfil aldrig explicit definieras vilken teckenkodning som används finns det inget sätt att säkert Veta vilken teckenkodning den använder. Däremot finns det program som är duktiga på att göra kvalificerad gissningar. Ett sådant program är
file. Det är ett program som tittar på en fil, försöker avgöra vad det är för sorts fil och sen presentera lite kort information, baserad på filtypen, om filen ifråga.
file filnamn.foo
Nu kan dock
file få för sig att vara lite godtycklig med när den ska spotta ur sig information om teckenkodning eller ej. Ett tips är då att slänga på --mime flaggan.
file --mime filnamn.foo
SV: UTF8 -> ANSI mass-konvertering?
Postat: 24 jan 2008, 01:25
av mcNisse
Jimbo skrev:
mcNisse skrev:
Du måste nog kontrollera vad du har för kodning i filen. Öppna filen i en editor som klarar att byta teckenkodning och se om du kan byta till en som visar innehållet på ett korrekt sätt. Dessa editorer vet jag klarar av det emacs, kate, kwrite.
Det går inte att köra recode två gånger på samma fil med samma argument... det kan bli kaos.
Det är precis det jag vill göra men eftersom jag inte har något GUI till servern så blir det lite svårt.
Finns det inget kommando som visar vilken kodningen en fil har?
Installera emacs. Den fungerar i terminalen också, eller rättare sagt emacs fungerar även under x

. M-x set-buffer-file-coding-system.