Ändra teckenkodning via kommando?

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Ändra teckenkodning via kommando?

Inlägg av ubot »

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?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Ändra teckenkodning via kommando?

Inlägg av Konservburk »

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.
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Ändra teckenkodning via kommando?

Inlägg av ubot »

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

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.
Lars
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?

Inlägg av Lars »

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.
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Ändra teckenkodning via kommando?

Inlägg av ubot »

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

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!
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Ändra teckenkodning via kommando?

Inlägg av ubot »

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.
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Ändra teckenkodning via kommando?

Inlägg av ubot »

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);
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Ändra teckenkodning via kommando?

Inlägg av ubot »

Suck, finns det ingen bash/php-expert här som vet hur man löser det här?
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Ändra teckenkodning via kommando?

Inlägg av ubot »

Jag har redan testat det och funktionen ger inte rätt encoding. Latin-1 tolkas som utf-8 osv. Inte tillförlitligt.'

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?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Ändra teckenkodning via kommando?

Inlägg av Konservburk »

ubot skrev:
Jag har redan testat det och funktionen ger inte rätt encoding. Latin-1 tolkas som utf-8 osv. Inte tillförlitligt.'
Då använder du den funktionen på fel sätt. :P
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Ändra teckenkodning via kommando?

Inlägg av ubot »

Konservburk skrev:
ubot skrev:
Jag har redan testat det och funktionen ger inte rätt encoding. Latin-1 tolkas som utf-8 osv. Inte tillförlitligt.'
Då använder du den funktionen på fel sätt. :P
Jag gjorde såhär:

Kod: Markera allt

$html = mb_detect_encoding($str, "auto");
if ($html == "UTF-8")
{
echo $html;
}
else
{
$html_utf8 = utf8_encode($html);
echo $html_utf8;
}
Du har rätt såklart. Jag måste ju ha med en lista med encodings att matcha mot (om jag har fattat saken rätt).
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Ändra teckenkodning via kommando?

Inlägg av ubot »

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;
}
Skriv svar

Återgå till "Terminalforum"