Sida 1 av 1

Linuxfråga - Putty + ncurses + UTF8 = problem?

Postat: 27 februari 2010, 21:13:42
av Oskar
Har nyligen uppgraderat min hemmaserver, både ny maskin och senaste Ubuntu. Jag har inget X, kör bara textkonsol. Nu när jag efter ett tag börjat programmera lite på den, visar sig ncurses se taskigt ut. Det är specifikt de tecken som man ritar linjer, exempelvis ramar med som ej visas korrekt. Letade länge och väl fel i mitt eget program innan jag insåg att det såg likadant ut i "proffsprogrammen" också.

Satt i mer än sex timmar igår och provade olika inställningar, googlade och läste på nätet. Till slut gav jag upp. Kanske har någon EFare tips och råd.

Mitt problem är att s.k "Line drawing characters" blir vanliga bokstäver. Ett exempel, alsamixer:
Bild

Problemet verkar finnas oavsett vilken terminal jag väljer, "linux, xterm, xterm-color osv, har till och med provat en terminal som heter "putty" också (ändrat TERM= .. variabeln i bash). Av vad jag kan se är problemet i putty och hur den hanterar UTF-8. Efter Googlandet igår så verkar finnas en del som har haft problem med just ncurses, UTF-8 och putty. Det är dock spridda skurar med olika distros och ibland bara i midnight commander ex, och det är mest inaktuella forumtrådar jag hittat. Det finns en miljövariabel (NCURSES_NO_UTF8_ACS=1) man kan sätta i bash och som ncurses letar efter innan det körs igång i ett program som tydligen skall "fixa" detta, men det funkade inte för mig iaf.

Jag säger som Sverker; "ska det vara så här??" Någon som kör putty med UTF-8 och inte har problem med ncurses??

Putty är inställd på UTF-8 under "character set translation of received data". Om jag ställer in "ISO-8859-1:1998 (Latin-1, West Europe)", blir ncurses fint igen, men då funkar ju inte de svenska tecknen, suck. Ett alternativ är naturligtvis att byta från det där fördömda UTF-8 och köra nåt annat på servern. Men "det ska ju tydligen vara UTF-8 numer", eller?

Mina inställningar i korthet:
(linuxservern) LANG=sv_SE.UTF-8
(linuxservern) TERM=xterm
(putty) "character set translation of received data" - UTF-8

Fattar inte att det skall vara så förbaskade svårt att få tecken att se ut som dom skall i linuxvärlden, det är ju ett evigt strul. Kan det vara nåt med Windowsmiljön? Fonter ex som inte stödjer UTF-8? Jag kör Windows 2000. (kom just på detta, skall springa ut i verkstan och prova på XP maskinen jag har där).

Help me Elektronikforumet, you're my only hope

:)

/Oskar

Re: Linuxfråga - Putty + ncurses + UTF8 = problem?

Postat: 28 februari 2010, 00:06:53
av sodjan
Brukar bli så där om man inte har en terminalinställning
som stöder "line-graphic". Vilken terminal emulerar du ?
VT4xx, VT5xx eller liknande ?

Re: Linuxfråga - Putty + ncurses + UTF8 = problem?

Postat: 28 februari 2010, 00:52:32
av Glenn
Själv kör jag ISO latin-1 på alla mina *ix-maskiner just för att slippa den mängden av problem UTF8 ställer till med..

Re: Linuxfråga - Putty + ncurses + UTF8 = problem?

Postat: 28 februari 2010, 02:08:14
av Oskar
Glenn:
Ja det är ju det enklaste, ändra till "latin1" på servern och då funkar ju allt. Är liiite motvillig att gå ifrån UTF-8 bara av den anledningen att jag även använder servern till lite irc chattande, och den servern jag är inne på kör också UTF-8, byter jag slutar ju åäö att funka där :evil: Och en sak till, alla filnamn med åäö går väl sönder om jag byter till annan kodning än UTF-8?

Sodjan:
Jag använder xterm och jag frågade google vilken terminaltyp den använder. Skall visst vara nära vt102/220.

Varför har UTF-8 blivit så populärt om det bara ställer till en massa bekymmer??

Jag kan ju få linjetecknen att visas korrekt om jag mitt i min ssh session byter "character translation" i putty från UTF-8, till "latin1".

Lite underligt att man inte hittar mer om det här problemet på nätet.

/Oskar

Re: Linuxfråga - Putty + ncurses + UTF8 = problem?

Postat: 28 februari 2010, 03:02:07
av sodjan
> alla filnamn med åäö går väl sönder

Filnamn med åäö är en korkad idé hur som helst, helt oavsett latin, UTF eller något annat...

Re: Linuxfråga - Putty + ncurses + UTF8 = problem?

Postat: 28 februari 2010, 03:12:51
av Glenn
Oskar skrev:Glenn:
Ja det är ju det enklaste, ändra till "latin1" på servern och då funkar ju allt. Är liiite motvillig att gå ifrån UTF-8 bara av den anledningen att jag även använder servern till lite irc chattande, och den servern jag är inne på kör också UTF-8, byter jag slutar ju åäö att funka där :evil: Och en sak till, alla filnamn med åäö går väl sönder om jag byter till annan kodning än UTF-8?
Du menar filer skapade med åäö i filnamnet innan bytet ? hmm, vet ej, dels byter jag det första jag gör, dels undviker jag åäö i filnamn :)

Tror f.ö de flesta irc-klienter som stöder UTF8 klarar det även på ett system som kör ISO, har för mej att iaf xchat gör det.
Varför har UTF-8 blivit så populärt om det bara ställer till en massa bekymmer??
Bra fråga :) ..fördelen är väl mest för folk som skriver många olika språks specialtecken antar jag.

Unicode är ju en vacker tanke, UTF8 (som ju är ett sätt att koda unicode på 8 bitar) är det inte.

Re: Linuxfråga - Putty + ncurses + UTF8 = problem?

Postat: 28 februari 2010, 06:47:01
av blueint
Prova ISO 8859-15 (ej 8859-1)
Problemet ligger sannolikt i terminalprogrammet som används.

Varför UTF-8 då, jo det ger 1-tecken = 1-byte i dom flesta fall men "escape codes" ger möjlighet till fler tecken (2^32). Så att man kan skriva långa dashes, omega osv.. Samt viktigast ett teckensätt för både västerländskt och asiatiska språk.

Men det bryter 1-tecken = 1-byte regeln. Vilket gör programmering bökigt!!
Förutom inkompabilitet med den massiva mängd iso8859-15 filer och program som redan finns. För det finns inget "gå utf-8 läge" utan teckensättet är ett definierat antagande.

Den elaka sanningen är att Amerikanarna gjorde det enkelt för sig och lät kod 0-127 vara som det är medan 128-255 används som "kontroll tecken". Hadde man använt ETT tecken som port till fördärvet hadde problematiken varit mycket mindre.
Hur UTF-8 fungerar med hexdumpar vill man inte ens fundera på..
UTF-8 är skit för kommandoradsbaserade applikationer i skandinavien (minimum), hexdumpar, enkelhet i C-program osv.

Du skulle kunna göra en "ful" lösning. Låt ett program som översätter iso/utf öppna en pty och kör ditt program under den pty'n. Låt sedan terminalprogrammet använda tty'n. Så märker ingen av dom skillnaden.

Re: Linuxfråga - Putty + ncurses + UTF8 = problem?

Postat: 28 februari 2010, 12:03:44
av Oskar
Nu blev det så jag ändrade till sv_SE.iso885915. Vill sluta bråka med UTF-8 och gå vidare med programmeringen. Får se hur jag löser irc biten. Går kanske att ställa in så man kör UTF-8 bara i irc klienten. Jag kör irssi.

Filnamnen gick faktiskt inte sönder. Beror väl på att åäö "ryms" i en UTF-8 byte kanske?
Visst ska man väl kunna ha svenska tecken i filnamn? Jag använder servern för all lagring, och Svenska är väl fortfarande skrivspråket vi använder? Jag låter kanske gnällig, jag undviker ju också svenska tecken i filnamn för det mesta, men en del officedokument, bilder och annat har svenska tecken i filnamnet.

När jag skriver program, script och dyl är det ju självklart engelska som gäller dock.

Men märkligt är det. Även på andra sidan pölen borde man ju ha problem med "line-drawing characters", så varför skrivs det inte mer om det på nätet?

Tack för era tips och råd föresten! :)

/Oskar

Re: Linuxfråga - Putty + ncurses + UTF8 = problem?

Postat: 28 februari 2010, 12:28:14
av sodjan
> Även på andra sidan pölen borde man ju ha problem med "line-drawing characters",

Om du menar de som används i VT-emuleringar, så har de inget med teckenuppsättning
att göra, annat än i terminalen (eller emulatorn). De tecknen finns inte i vanliga
teckenuppsättningar. Så ISOxxx, UTFxxx eller något annat har mindre betydelse.

Kolla t.ex här : http://support.attachmate.com/techdocs/1184.html
en bit ner under "DEC Special Graphic Character Set (VT Emulation)".

Om du tar de tecken som du har i skärmdumpen ovan, strippar bit-8 och mappar
det från tabellen "ASCII Character Set" mot motsvarande position i tabellen
"DEC Special Graphic Character Set (VT Emulation)" så ser du att de "stämmer"
mot vad du sannolikt vill ha på skärmen.

Kolla även kap 4.10.4 och 4.10.5 här :
http://the.earth.li/~sgtatham/putty/0.5 ... pter4.html

Om du kollar här : http://invisible-island.net/xterm/xterm.faq.html
så hittar du bl.a :
Finally, some people confuse the VT100 graphic characters with the VT220
support for DEC technical character set. These are distinct (7-bit) character sets.
Xterm currently does not support this.

Re: Linuxfråga - Putty + ncurses + UTF8 = problem?

Postat: 28 februari 2010, 13:11:47
av Oskar
En annan teckenuppsättning än UTF-8 ger ju bevisligen bättre resultat, men frågan är i vilken ände det är felimplementerat. Hur jag ska göra för att reda ut det har jag ingen aning om, kan för lite.

Jo jag bollade runt med de olika inställningarna i putty för "line drawing characters". Ingen av de inställningarna gjorde någon skillnad på hur linjetecknen visades i UTF-8. Den inställning jag kör med är "Use unicode line drawing code points". Vad det betyder vet jag inte. Jag tror inte att "allt kommer med" när putty tolkar linjetecknen i UTF-8, det blir något problem när det skall växlas från en byte till vad-det-nu-krävs-för-linjetecken. Därför spelar det ingen roll vad man gör för inställningar i övrigt. Så länge putty kör UTF-8 så funkar det inte. '

/Oskar

Re: Linuxfråga - Putty + ncurses + UTF8 = problem?

Postat: 28 februari 2010, 13:21:22
av sodjan
OK.
När jag använder PyTTY (ver 0.58) så fungerar både "USe Unicode line points"
och "USe fonts in both ANSI and OEM modes". Båda ger korrekta line drawing
tecken. Om jag däremot slår av stödet för "DEC-CRT" i min terminal i maskinen
så får jag ersättningstecken eftersom det då inte skickas ESC-koder för
att byta font i terminalen.

Notera alltså att line drawing tecknen inte bara handlar om en encoding, utan att
makinen/servern måste ha stöd för att generera rätt ESC-koder för att
switcha font i terminalen för att det ska fungera.

Re: Linuxfråga - Putty + ncurses + UTF8 = problem?

Postat: 28 februari 2010, 14:02:30
av sodjan
En annan sak som kan hjälpa till att undersöka sådana här saker är
att slå över terminalen till "display control codes" (istället för "interpret...").
Dock stöder inte PuTTY detta. Med en riktigt terminalemulator så fungerar
det dock bra och då ser man exakt vad som skickas.

Det här är t.ex början av bilden nedan :

Kod: Markera allt

␛)0␛[1;24r␛[;H␛[2J␛[1;29HOpenVMS Monitor Utility                             ␛[1
;52H␛[24;1H␛[24;2H␛[24;2H␛[24;34H␛[24;35H␛[24;35H␛[24;70H␛[24;71H␛[24;71H␛[2;1H␛
[2;31H␛[2;31H␛[2;31H␛[7m SYSTEM STATISTICS ␛[m␛[2;50H␛[K␛[2;50H␛[1;1H␛[1;1HNode:
 xxxx                  OpenVMS Monitor Utility                             ␛[1;1
1H␛[1;11H␛[2;1H␛[2;1HStatistic: CURRENT            ␛[2;31H␛[7m SYSTEM STATISTICS
 ␛[m␛[2;50H␛[K␛[2;19H␛[2;19H␛[4;11H␛[4;11H␎l␏␛[4;12H␛[K␛[4;12H␛[4;37H␛[4;37H␎qk␏
␛[4;39H␛[K␛[4;39H␛[5;11H␛[5;11H␎x␏␛[5;12H␛[K␛[5;12H␛[5;38H␛[5;38H␎x␏␛[5;39H␛[K␛[
5;39H␛[6;1H␛[6;1H␎CPU     0 tqqqqqqqqqqqqqqqqqqqqqqqqqqu ␏␛[6;40H␛[K␛[6;40H␛[6;4
0H␎100 ␏␛[6;44H␛[K␛[6;44H␛[7;11H␛[7;11H␎x␏␛[7;12H␛[K␛[7;12H␛[7;38H␛[7;38H␎x␏␛[7;
39H␛[K␛[7;39H␛[8;11H␛[8;11H␎mqqqqqqqqqqqqqqqqqqqqqqqqqqj␏␛[8;39H␛[K␛[8;39H␛[11;1
1H␛[11;11H␎l␏␛[11;12H␛[K␛[11;12H␛[11;37H␛[11;37H␎qk␏␛[11;39H␛[K␛[11;39H␛[12;11H␛
Det ger alltså denna bild :

Kod: Markera allt

Node: xxxx                  OpenVMS Monitor Utility     28-FEB-2010 13:39:58    
Statistic: CURRENT             SYSTEM STATISTICS 
                                                     Process States             
          ┌ CPU Busy (0)            ─┐         LEF:       4    LEFO:       0
          │                          │         HIB:      20    HIBO:       0
CPU     0 ├──────────────────────────┤ 100     COM:       0    COMO:       0
          │                          │         PFW:       0    CUR:        1
          └──────────────────────────┘         MWAIT:     0    Other:      0
...
...
...
och det är <ESC>)0 just i början som väjer fonten med line drawing tecken.

En annan sak...
Vad har du för inställnig på "received data assumed to be in which character set" i PuTTY ?
Jag har ISO-8859-10, men byter jag till UTF-8 så blir det samma tecken som du visar i första inlägget.

Re: Linuxfråga - Putty + ncurses + UTF8 = problem?

Postat: 28 februari 2010, 15:00:40
av Oskar
Jag kör med "received data assumed to be in which character set" = UTF-8. Detta eftersom servern kör UTF-8, eller "sv_SE.utf8" mer specifikt. Jag kan byta till ISO-8859-15, eller liknande i putty och då få korrekta linjetecken fast jag fortfarande har ""sv_SE.utf8" inställt på servern, men då funkar inte svenska tecken i stället.

När du kör putty med "received data assumed to be in which character set" = ISO-8859-10, har du ISO-8859-10 även på maskinen du ansluter till?

/oskar

Re: Linuxfråga - Putty + ncurses + UTF8 = problem?

Postat: 28 februari 2010, 15:27:06
av sodjan
Njae, på servern används mest 7-bit ASCII med svens/finsk teckenuppsättning.
D.v.s "åäö..." istället för "[]\..." o.s.v. Det vet inte vad ISO-8859 eller UTF är
över huvudtaget... :-)

Re: Linuxfråga - Putty + ncurses + UTF8 = problem?

Postat: 28 februari 2010, 15:36:01
av Oskar
Vilken djungel detta är .. fattar noll :oops:

För att begripa sig på terminalen i linux måste man tydligen ha transcenderat till en nivå av kosmisk upplysning...

/Oskar