# Unicode/UTF-8 problemer

## PerJ

Jeg prøver å konfigurere systemet mitt for bruk av UTF-8 (etter denne guiden: http://gentoo-wiki.com/HOWTO_Make_your_system_use_unicode/utf-8), men støter på en del problemer.

Støtte for UTF-8 er kompilert inn i kjernen, og "nls" og "userlocales" er satt som use-flagg.

Jeg har satt UNICODE="yes" i rc.conf og KEYMAP="no-latin1" i keymaps.

Kjører jeg "locale", får jeg:

```
> locale

LANG=en_US.UTF8

LC_CTYPE=nb_NO.UTF8

LC_NUMERIC=nb_NO.UTF8

LC_TIME=C

LC_COLLATE=nb_NO.UTF8

LC_MONETARY=nb_NO.UTF8

LC_MESSAGES=en_US.UTF8

LC_PAPER=nb_NO.UTF8

LC_NAME="en_US.UTF8"

LC_ADDRESS="en_US.UTF8"

LC_TELEPHONE="en_US.UTF8"

LC_MEASUREMENT=nb_NO.UTF8

LC_IDENTIFICATION="en_US.UTF8"

LC_ALL=
```

Locale -a gir meg:

```
> locale -a

C

de_DE

de_DE@euro

en_HK

en_PH

en_US.iso88591

en_US.utf8

es_MX

fa_IR

fr_FR

fr_FR@euro

it_IT

ja_JP

ja_JP.eucjp

ja_JP.utf8

nb_NO

nb_NO.utf8

POSIX
```

Likevel får jeg ikke tilgang til f.eks. "æ", "ø" og "å" i terminaler under X (jeg bruker vanligvis rxvt-unicode).

Filnavn som inneholder nasjonale symboler vises som "??" i terminalen, og filer som inneholder "æ", "ø" eller "å" _og_ som er kodet i UTF-8 dukker opp som "invalid encoding" med Gnome-applikasjoner.

Når jeg starter en X-applikasjon som f.eks. Scite, får jeg:

```
> scite

(process:7742): Gdk-WARNING **: locale not supported by Xlib

(process:7742): Gdk-WARNING **: cannot set locale modifier
```

Om jeg ikke starter opp X, får jeg tilgang til "æ", "ø" og "å" på tastaturet, men filnavn som inneholder de samme bokstavene vises fortsatt som "??"

Noen som har noen tips om hva jeg kan forsøke for å rette på dette?

----------

## patrix_neo

Läs igenom vad du ska göra i dokument delen av gentoo siten under:

```
 System Administration --> UTF-8 documentation.
```

Tror du ska ha iso0-6 definierad i filerna consolefont och keyboards under /etc/conf.d/ om du ska köra dansk/norskt.

Mer utförligt om vilken keymap alt consolefont du ska använda finns i en sticky thread, här på detta forum, för att få rätt tecken i gentoo. Hoppas du får ordning på det.

----------

## PerJ

Takk for svar.

Jeg har lest i gjennom dokumentasjonen både her på site'n og på gentoo-wiki'en, uten å finne noen løsning der.

Og som det står i sticky-thread'en i dette forumet, har jeg satt: CONSOLEFONT="lat0-16" i /etc/conf.d/consolefont .

Andre forslag?

----------

## patrix_neo

Har du testat med att köra 

```

/etc/init.d/keymaps restart

/etc/init.d/consolefont restart

```

och

```

env-update

source /etc/profile ?

```

Föresten, hur ser din output av locale ut nu? Du vet väl att /etc/env.d/02locale bara behöver innehålla LC_ALL="no_NO.UTF-8" väl? Det:?:  har jag (LC_ALL="sv_SE.UTF-8"), och sedan en sak till....

Kolla upp din /etc/locales.build (Måste ha din motsv no_NO.UTF-8 variabel) och vad säger:

```

emerge -pv glibc

```

Om det säger '-userlocales' bland flagg parametrarna, får du se över din /etc/make.conf (Ska ha USE flagga: userlocales)

Finns inte dessa, måste du som sagt lägga till 'userlocales' och kompillera om glibc, vilket du får göra på egen risk.  :Cool: 

userlocales ser till att använda den keycode som du anger i /etc/build.make filen.

----------

## PerJ

Følgende:

```
/etc/init.d/keymaps restart

/etc/init.d/consolefont restart

env-update

source /etc/profile
```

... gjør ingen forskjell.

(men når jeg restarter /etc/init.d/keymaps i X, kræsjer hele maskina.... må bruke powerknappen for å restarte)

 *Quote:*   

> Föresten, hur ser din output av locale ut nu?

 

Samme som før.

 *Quote:*   

> Du vet väl att /etc/env.d/02locale bara behöver innehålla LC_ALL="no_NO.UTF-8" väl?

 

Ja, men jeg vil gjerne ha menyer og andre beskjeder på engelsk.

(jeg har forøvrig også testet både LC_ALL="no_NO.UTF-8" og LC_ALL="en_US.UTF-8" med samme resultat)

 *Quote:*   

> Kolla upp din /etc/locales.build (Måste ha din motsv no_NO.UTF-8 variabel)

 

Den la jeg inn, ja.

glibc sier:

```
> emerge -pv glibc

These are the packages that I would merge, in order:

Calculating dependencies ...done!

[ebuild   R   ] sys-libs/glibc-2.3.5-r1  -build -erandom -glibc-compat20 -glibc-omitfp -hardened -linuxthreads-tls (-multilib) +nls -nptl -nptlonly -pic -profile (-selinux) +userlocales 0 kB
```

Og jeg har allerede rekompilert glibc et par ganger.

 *Quote:*   

> userlocales ser till att använda den keycode som du anger i /etc/build.make filen.

 

Hmmmm... denne filen har jeg ikke.

Er det et problem?

----------

## patrix_neo

Citat:

 *Quote:*   

> 
> 
>  *Quote:*   
> 
> Du vet väl att /etc/env.d/02locale bara behöver innehålla LC_ALL="no_NO.UTF-8" väl?
> ...

 

Förstår jag mycket väl, och dessa finns kvar om jag förstår saken rätt. Vissa compilemeddelanden kommer på svenska hos mig dock... men dina nb_NO.UTF-8 kan väl ändå inte stämma? Bör vad jag ser det, vara no_NO.UTF-8. Vilket jag ser så är dina locales lite fel.

```

LANG=en_US.UTF8

LC_CTYPE=nb_NO.UTF8  - Bör vara no_NO.UTF-8

LC_NUMERIC=nb_NO.UTF8 - Se ovan.

LC_TIME=C  - no_NO.UTF-8

LC_COLLATE=nb_NO.UTF8 - no_NO.UTF-8

LC_MONETARY=nb_NO.UTF8 - osv osv

LC_MESSAGES=en_US.UTF8

LC_PAPER=nb_NO.UTF8

LC_NAME="en_US.UTF8"

LC_ADDRESS="en_US.UTF8"

LC_TELEPHONE="en_US.UTF8"

LC_MEASUREMENT=nb_NO.UTF8

LC_IDENTIFICATION="en_US.UTF8"

LC_ALL=

```

Filen du ska se efter är  /etc/locales.build int /etc/build.make. Fel av mig. Denna filen (/etc/locales.build) ser ut så här för mig:

```

# This file names the list of locales to be built when glibc is installed.

# The format is <locale>/<charmap>, where <locale> is a locale from the

# /usr/share/i18n/locales directory, and <charmap> is name of one of the files

# in /usr/share/i18n/charmaps/. All blank lines and lines starting with # are

# ignored. Here is an example:

# en_US/ISO-8859-1

en_US/ISO-8859-1

en_US.UTF-8/UTF-8

sv_SE/ISO-8859-1

sv_SE@euro/ISO-8859-15

sv_SE.UTF-8/UTF-8

```

'

Om du _inte_ har med no_NO.UTF-8/UTF-8, måste du lägga till detta, och eventuellt no_NO/ISO-8859-1. Sedan kompillera om glibc.

----------

## patrix_neo

 *Quote:*   

> 
> 
> ```
> 
> /etc/init.d/keymaps restart
> ...

 

Varför detta händer vet jag faktiskt inte, men som du själv skrev innan:

 *Quote:*   

> 
> 
> Når jeg starter en X-applikasjon som f.eks. Scite, får jeg:
> 
> ```
> ...

 

Detta tyder på att X inte kan hitta din nb_NO.UTF8, eftersom den inte existerar. Ergo, datorn beteer sig besynnerligt åt.

----------

## PerJ

Slik er starten av /etc/locales.build hos meg:

```
# This file names the list of locales to be built when glibc is installed.

# The format is <locale>/<charmap>, where <locale> is a locale from the

# /usr/share/i18n/locales directory, and <charmap> is name of one of the files

# in /usr/share/i18n/charmaps/. All blank lines and lines starting with # are

# ignored. Here is an example:

# en_US/ISO-8859-1

nb_NO.UTF-8/UTF-8

en_US.UTF-8/UTF-8

nb_NO/ISO-8859-15

en_US.ISO-8859-1
```

 *Quote:*   

> men dina nb_NO.UTF-8 kan väl ändå inte stämma? Bör vad jag ser det, vara no_NO.UTF-8. Vilket jag ser så är dina locales lite fel.

 

Etter hva jeg har forstått så er nb_NO=norsk_bokmål , og likeledes nn_NO=norsk_nynorsk. (2 offisielle norske skriftspråk, vettu)

Men du har kanskje et poeng, jeg har faktisk ikke testet med no_NO, slik jeg feilaktig kom til å skrive lenger opp.

Jeg tviler vel egentlig på at det har noe å si, siden jeg har jo allerede testet med "en_US.UTF-8" og får akkurat samme resultat da....

Dog skal jeg legge til no_NO.UTF-8 i locales.build og sette igang en ny kompilering av glibc (jeg har ikke så mange andre triks igjen i ermet...).

----------

## PerJ

Ok. Da har jeg lagt til følgende i locales.build:

```
no_NO/ISO-8859-1

no_NO@euro/ISO-8859-15

no_NO.UTF-8/UTF-8
```

... og rekompilert glibc.

/etc/env/02locale er satt til LC_ALL="no_NO.UTF8"

Jeg har kjørt:

```
env-update

source /etc/profile
```

Nå får jeg dette:

```
> locale

locale: Cannot set LC_CTYPE to default locale: No such file or directory

locale: Cannot set LC_MESSAGES to default locale: No such file or directory

locale: Cannot set LC_ALL to default locale: No such file or directory

LANG=

LC_CTYPE="no_NO.UTF-8"

LC_NUMERIC="no_NO.UTF-8"

LC_TIME="no_NO.UTF-8"

LC_COLLATE="no_NO.UTF-8"

LC_MONETARY="no_NO.UTF-8"

LC_MESSAGES="no_NO.UTF-8"

LC_PAPER="no_NO.UTF-8"

LC_NAME="no_NO.UTF-8"

LC_ADDRESS="no_NO.UTF-8"

LC_TELEPHONE="no_NO.UTF-8"

LC_MEASUREMENT="no_NO.UTF-8"

LC_IDENTIFICATION="no_NO.UTF-8"

LC_ALL=no_NO.UTF-8
```

og...

```
> locale -a

locale: Cannot set LC_CTYPE to default locale: No such file or directory

locale: Cannot set LC_MESSAGES to default locale: No such file or directory

locale: Cannot set LC_COLLATE to default locale: No such file or directory

C

POSIX

de_DE

de_DE@euro

en_HK

en_PH

en_US.iso88591

en_US.utf8

es_MX

fa_IR

fr_FR

fr_FR@euro

it_IT

ja_JP

ja_JP.eucjp

ja_JP.utf8

nb_NO

nb_NO.utf8
```

Så det ser ut som jeg har ikke no_NO som locale enda.

Jeg prøver:

```
> localedef -i no_NO -f UTF8 no_NO.UTF8

cannot open locale definition file `no_NO': No such file or directory
```

Så hva kan problemet være her...?

----------

## PerJ

Dette begynner forsåvidt å bli litt interessant.

Etter å ha lett i /usr/share/i18n/locales/, så ser jeg at jeg at jeg ikke har noen definisjonsfil for "no_NO".

Jeg har en WmWare-innstallasjon av Fedora Core 4 liggende, så jeg henter ut tilsvarende fil fra den.

Som jeg tidligere antok så inneholder den kun anvisninger for å bruke "nb_NO" definisjonsfilen.

Men når jeg nå prøver å kjøre 'localedef' får jeg dette:

```
> localedef -i no_NO -f UTF8 no_NO.UTF8

/usr/share/i18n/locales/nb_NO:31: LC_IDENTIFICATION: unknown character in field `language'

/usr/share/i18n/locales/nb_NO:2155: LC_TIME: unknown character in field `abday'

/usr/share/i18n/locales/nb_NO:2158: LC_TIME: unknown character in field `abday'

/usr/share/i18n/locales/nb_NO:2159: LC_TIME: unknown character in field `day'

/usr/share/i18n/locales/nb_NO:2165: LC_TIME: unknown character in field `day'

no output file produced because warning were issued
```

(jeg får selfølgelig akkurat det samme resultatet om jeg kjører 'localedef' på "nb_NO")

Nå aner ikke jeg hvordan syntaxen bør være i nb_NO-filen, men om jeg kikker litt nærmere på f.eks. den første feilen, så ser linje nr. 31 i "nb_NO" fila slik ut:

```
language   "Norwegian, Bokm<U00E5>l"
```

Er det noen som får kjørt 'localedef -i no_NO -f UTF8 no_NO.UTF8' uten feilmeldinger, som har lyst til å dele /usr/share/i18n/locales/nb_NO med meg?

Jeg prøvde også å kjøre 'localedef -i en_US -f UTF8 en_US.UTF8' , og dette gikk uten problemer.

Etter så å ha satt /etc/env/02locale til LC_ALL="en_US.UTF8" og kjørt 'env-update && source /etc/profile', så får jeg ikke lenger noen feilmeldinger når jeg starter X-applikasjoner. Men jeg får fortsatt "invalid encoding" når jeg prøver å kikke på filnavn kodet i UTF-8...

edit: glemte å nevne at jeg også prøvde dette med "nb_NO" fila fra FC4 innstallasjonen med akkurat samme resultat (noe som vel egentlig peker mot at det er noe annet som også er galt her...

----------

## patrix_neo

Du har rätt i att det finns no_NO, nb_NO och nn_NO. Visste inte om detta. Fel som jag reagerat mest mot är dina UTF8 istället för UTF-8.

Det du lade till i /etc/locales.make ser rätt ut...

vad ger 

```

localedef -i no_NO -f UTF-8 no_NO.UTF-8 

```

..och 

```

locale -a | grep no_NO alt locale -a |grep nb_NO ?

*Vad jag ser ger det .utf8  istället för UTF-8 som är mer riktigt.

```

Plus hur ser det ut i /etc/rc.conf ? (CONSOLEFONT + KEYMAPS + CONSOLETRANSLATION bör vara kommenterade här).

Förslagsvis: Se även över dina /etc/conf.d/keymaps + consolefont filer efter felstaverat utf8 (ska vara: UTF-8 ).

Under /usr/share/i18n/locales hittar jag hos mig sv_SE, sv_FI, nb_NO och nn_NO men ingen no_NO. Att ha nb_NO istället för no_NO verkar ju vettigt i så fall.

Vet faktiskt inte hur ditt system beter sig med din VmWare historia.... Men för att få ordning på din installation av teckenkoder bör du har rätt uppsatt i dina konfigureringar först och främst. Kan ju inte vara fel i alla fall.  :Smile:  Bäst är tycker jag om du fortfarande har dessa problem, se igenom gentoo dokumentationen en gång till och jämför med vad du har i din maskin. Plus då att du kollar i UTF-8 för norsk/dansk/svensk gentoo - sticky thread. Anteckna det som är vesäntligt för norsk (nb_NO) uppsättning och peta sedan in ändringarna i /etc - filerna. Detta är mitt råd.

----------

## PerJ

*Klaske seg i hodet*

Du har selvfølgelig helt rett!

Med 'localedef -i nb_NO -f UTF-8 nb_NO.UTF-8' får jeg ingen feilmeldinger, og kan uten problemer skifte til norsk UTF-8.

(det pussige er at jeg tidligere brukte riktig kommando da jeg testa localedef med en_US).

Dette løste det meste av problemene mine, men ett gjenstår fortsatt:

Når jeg kikker på filnavn, kodet i UTF-8, som ineholder nasjonale tegn (æ, ø, å og lingnende) i gnome-applikasjoner, får jeg fortsatt "invalid encoding"... (f.eks når jeg browser med Nautilus, eller med gFTP)

Må jeg kanskje også rekompilere noen bibliotek etter å endelig fått satt riktig locale?

----------

## patrix_neo

Kul att det mesta löste sig för dig. Då har jag inte skrivit helt i onödan då  :Smile: 

Ja...jag vet inte så mycket, men pango är den komponent som ska sköta teckenkodningen. Eftersom du nu har en glibc med norskt...testa att kompillera om pango ? (Kan finnas fler saker som behövs här, inte säker på hur det ligger till).

----------

