Ändra teckenkodning via kommando?
Ändra teckenkodning via kommando?
Går det att ändra Terminalens teckenkodning från tex utf-8 till latin-1 mha ett kommando, dvs utan att behöva gå vägen om Terminalens meny manuellt i gränsnsittet?
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Ändra teckenkodning via kommando?
Det beror nog vilken terminal du använder. Varför inte ändra själva texten så att dess teckenkodning passar din terminal istället? Det kan du göra med kommandot iconv.
Re: Ändra teckenkodning via kommando?
Jo, men hänger svenska bokstäver med då? Eller blir svenska tecken konstiga under konverteringen? Aja, jag testar helt enkelt så får vi se.Konservburk skrev:Det beror nog vilken terminal du använder. Varför inte ändra själva texten så att dess teckenkodning passar din terminal istället? Det kan du göra med kommandot iconv.
Edit:
Problemet är att jag får det här felmeddelandet när å, ä eller ö dyker upp i texten:
illegal input sequence at position 11
Senast redigerad av 1 ubot, redigerad totalt 28 gånger.
-
- Inlägg: 6191
- Blev medlem: 14 jan 2007, 19:31
- OS: Ubuntu
- Utgåva: 22.10 Kinetic Kudu
- Ort: Stockholm
Re: Ändra teckenkodning via kommando?
Det tror jag inte, och du vill förmodligen inte ändra det. Terminalfönstret måste använda samma teckenkodning som programmen i terminalen använder, annars blir det fel. Ubuntu använder UTF-8 så t.ex. kommandot ls kommer att visa filnamn med UTF-8.
Om du t.ex. kör SSH mot en maskin som använder iso-latin-1 så kanske du behöver ändra vad terminalen använder. Eller så sköter SSH det själv, jag vet inte...
Som du har märkt så kan teckenkodning bli ganska krångligt, speciellt om man översätter flera gånger på vägen. Det enklaste är nog att försöka översätta allt till UTF-8 så snart som möjligt.
Om du t.ex. kör SSH mot en maskin som använder iso-latin-1 så kanske du behöver ändra vad terminalen använder. Eller så sköter SSH det själv, jag vet inte...
Som du har märkt så kan teckenkodning bli ganska krångligt, speciellt om man översätter flera gånger på vägen. Det enklaste är nog att försöka översätta allt till UTF-8 så snart som möjligt.
Re: Ändra teckenkodning via kommando?
Jo, men om jag har Terminalen inställd på utf-8 så visas inte svenska tecken som å, ä, ö korrekt. Jag måste byta till latin-1, men då slutar istället svenska bokstäver som kommer från webbsidor med utf-8 att fungera istället. Det var därför jag var inne på att anpassa Temrinalen, men det kanske inte är en bra idé då. Men iconv fungerar ju inte om jag kastar in en text på latin-1 med å, ä, ö och försöker konvertera till utf-8. Jag får ett felmeddelande när det dyker upp ett svenskt tecken.Lars skrev:Det tror jag inte, och du vill förmodligen inte ändra det. Terminalfönstret måste använda samma teckenkodning som programmen i terminalen använder, annars blir det fel. Ubuntu använder UTF-8 så t.ex. kommandot ls kommer att visa filnamn med UTF-8.
Om du t.ex. kör SSH mot en maskin som använder iso-latin-1 så kanske du behöver ändra vad terminalen använder. Eller så sköter SSH det själv, jag vet inte...
Som du har märkt så kan teckenkodning bli ganska krångligt, speciellt om man översätter flera gånger på vägen. Det enklaste är nog att försöka översätta allt till UTF-8 så snart som möjligt.
Webbsidor med utf-8 visas korrekt i Terminalen om jag har den inställd på utf-8, men då visas inte svenska tecken från webbsidor som har latin-1 som kodning på rätt sätt och tvärtom. Mycket irriterande!
Re: Ändra teckenkodning via kommando?
Nu har jag testat att i php göra om webbsidornas kod till utf-8, men då ser inte svenska tecken normala ut när omvandligen har gått från latin-1 till utf-8. går det inte att konvertera sv tecken från latn-1 till utf-8 och sedan visa tecken korrekt i Terminalen om man har Terminalen inställd på utf-8 också?
Edit:
Problemet är att när jag i mitt php-skript konverterar till utf-8 så visas text som kommer från sidor som har latin-1 på rätt sätt medan text som kommer från sidor som har utf-8 istället visas på fel sätt. Om jag istället låter bli att konvertera texten så blir latin-1 text fel och utf-8 text rätt. Hur kan konverteringen till utf-8 förstöra sv bokstäver som från början är i utf-8? De tär precis som något händer när jag konverterar text som redan är i utf-8 till utf-8 i php.
Tex "måste gå" blir mÃ¥ste gÃ¥ i Terminalen efter att jag kört texten som kommer från en webbsida med utf-8 genom phps funktion utf8_encode() som konverterar till utf-8 och ut i Terminalen. Varför blir det så här? Om jag istället kör en sida med latin-1 så syns bokstäverna som dom ska i Terminalen efter konvertering till utf-8.
Edit:
Problemet är att när jag i mitt php-skript konverterar till utf-8 så visas text som kommer från sidor som har latin-1 på rätt sätt medan text som kommer från sidor som har utf-8 istället visas på fel sätt. Om jag istället låter bli att konvertera texten så blir latin-1 text fel och utf-8 text rätt. Hur kan konverteringen till utf-8 förstöra sv bokstäver som från början är i utf-8? De tär precis som något händer när jag konverterar text som redan är i utf-8 till utf-8 i php.
Tex "måste gå" blir mÃ¥ste gÃ¥ i Terminalen efter att jag kört texten som kommer från en webbsida med utf-8 genom phps funktion utf8_encode() som konverterar till utf-8 och ut i Terminalen. Varför blir det så här? Om jag istället kör en sida med latin-1 så syns bokstäverna som dom ska i Terminalen efter konvertering till utf-8.
Re: Ändra teckenkodning via kommando?
Ok, jag misstänker att felet ligger i att texten redan är i utf-8. Då är frågan hur lägger man in en slags if-sats som bara konverterar till utf-8 om texten INTE redan är utf-8?
Kod: Markera allt
$utf = utf8_encode($html);
Re: Ändra teckenkodning via kommando?
Suck, finns det ingen bash/php-expert här som vet hur man löser det här?
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Ändra teckenkodning via kommando?
Jag har redan testat det och funktionen ger inte rätt encoding. Latin-1 tolkas som utf-8 osv. Inte tillförlitligt.'Konservburk skrev:http://php.net/manual/en/function.mb-de ... coding.php
Nu kör jag med engelsk version av Ubuntu. Det enklaste kanske är att ändra till svenskt språk i Terminalen? Alltså i "locale". Tror ni det hjälper Terminalen att visa svenska tecken ordentligt?
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Ändra teckenkodning via kommando?
Då använder du den funktionen på fel sätt.ubot skrev:Jag har redan testat det och funktionen ger inte rätt encoding. Latin-1 tolkas som utf-8 osv. Inte tillförlitligt.'Konservburk skrev:http://php.net/manual/en/function.mb-de ... coding.php

Re: Ändra teckenkodning via kommando?
Jag gjorde såhär:Konservburk skrev:Då använder du den funktionen på fel sätt.ubot skrev:Jag har redan testat det och funktionen ger inte rätt encoding. Latin-1 tolkas som utf-8 osv. Inte tillförlitligt.'Konservburk skrev:http://php.net/manual/en/function.mb-de ... coding.php
Kod: Markera allt
$html = mb_detect_encoding($str, "auto");
if ($html == "UTF-8")
{
echo $html;
}
else
{
$html_utf8 = utf8_encode($html);
echo $html_utf8;
}
Re: Ändra teckenkodning via kommando?
Nej, något är fel. Här är min kod och den säger ISO-8859-1 oavsett vilken kodning webbsidan jag använder har:
Kod: Markera allt
$enc = mb_detect_encoding($html_enc, 'UTF-8, ISO-8859-1');
if ($enc == "ISO-8859-1")
{
$html_enc = utf8_encode($html_enc);
}
else
{
$html_enc = $html_enc;
}