# (Resolved) tegn (char) problemer

## andip

Heisan,

Jeg har for litt siden installert(?) noe som heter ipplan. Det er en php-frontend til web-server som passer på ip-adresser, samt et par andre funksjoner.

Jeg prøver å "importere" ip-data fra en excel regneark, inn i denne php-frontend, men har problemer med norske tegn (æøå). Jeg editerer og sorterer og litt sånt i excel, før jeg lagrer det hele som en <TAB>-delimert text-fil, som så importeres inn i denne php-tingen, som bruker mysql databaser for å lagre. 

Alt ser fint ut i excel, og etter lagring så ser alt også finfint ut dersom jeg ser på text-fila med "more", eller open office spreadsheet. Om jeg ser på fila med "less", så ser det helt galt ut. Eksempler :

More : Østgård skole

Less : <D8>stg<E5>rd skole

Når jeg importerer textfila til mysql-basen/php-frontend, så forsvinner bare alt bak første spesial-tegn. Så "Østgård skole" som vist ovenfor blir bare borte, mens "Brårud skole" blir bare "Br".

Er det noen som har en anelse om hva som kan være galt, og hva jeg evt. kan gjøre for å rette opp i problemet?Last edited by andip on Wed Sep 02, 2009 6:49 am; edited 1 time in total

----------

## creideiki

 *andip wrote:*   

> Alt ser fint ut i excel, og etter lagring så ser alt også finfint ut dersom jeg ser på text-fila med "more", eller open office spreadsheet. Om jeg ser på fila med "less", så ser det helt galt ut. Eksempler :
> 
> More : Østgård skole
> 
> Less : <D8>stg<E5>rd skole
> ...

 

Det där är klassiska tecken på att programmen och texten använder olika teckenkodningar. Pröva:

```
env LC_CTYPE=nb_NO less $FIL
```

eller

```
env LC_CTYPE=nn_NO less $FIL
```

(tyvärr kan jag inte skillnaden mellan bokmål och nynorsk, så jag vet inte om det blir olika resultat)

Om någon av dem fungerar och du sedan byter ut LC_CTYPE globalt (se Gentoo Linux Localization Guide, särskilt kodlistning 3.1 och 3.4) och startar om databasen och webservern skall det nog gå bättre. Såvida inte det även är problem med hur MySQL skickar eller lagrar datat. Det är svart magi.

Lämplig läsning är "man locale", som säger:

```
       LC_CTYPE

              Determine  the locale for the interpretation of sequences of bytes of text data

              as characters (for example, single-byte as opposed to multi-byte characters  in

              arguments and input files).
```

Med LC_CTYPE satt till något som använder US-ASCII (t.ex. "C" eller "POSIX") så anses att bytevärdet 0xD8 inte är ett tecken, och då blir det trasigt. Med LC_CTYPE satt till något som använder ISO 8859-1 (t.ex. "nb_NO" eller "nn_NO", eller t.o.m. "en_US") så representerar bytevärdet 0xD8 plötsligt tecknet "Ø" och allt blir bra.

----------

## andip

hei, og takker for godt svar.

Jeg har kommet et stykke på vei. det vil si, alle tegn ser bra ut med less også nå, men min import går fortsatt galt. jeg har restartet apache og mysql, men vet ikke om kanskje php har noen innvirkning her.

skal sjekke direkte i databasen for å se hva som er lagret der. forhåpentligvis så ser jeg æøå der, men ikke via web-frontend.

igjen, takk for raskt og informativt svar.

----------

## creideiki

Det skulle kunna vara så att importen inte tycker om text kodad med ISO 8859-1 alls. Du skulle kunna pröva att köra den genom iconv först, t.ex. så här för att konvertera den till UTF-8:

```
iconv -f LATIN1 -t UTF-8 < $FIL > $FIL.utf8
```

----------

## andip

ja, fant ut av det etterhvert igår ;)

mye frem og tilbake med default char-set i mysql og php. frem og tilbake med excel, word, openoffice, for å få lagret dokumentet med utf-8. fant frem til iconv, og mine problemer var over :)

takker og bukker for hjelpen.

----------

