Samba og tegnsett

Dette informasjonen er relevant for de som observerer følgende når de forsøker å få tilgang til dokuementer fra Windows:

Løsning

Hvis du ikke har oversikt over forskjellige tegnsett og problemer knyttet til disse vil den raskeste løsningen være å ta kontakt med teknisk på epostadressen (unix@idi.ntnu.no). Husk å nevn hvilke filer og kataloger du tror dette dreier seg om. Selv om æøåÆØÅ fungerer på nye filer som opprettes nå, så kan det være like greit å unngå æøå i filnavn. Word foreslår f.eks filnavn ut fra overskriften og det er ikke sikkert man bør godta dette forslaget uten videre.

Forklaring

For det første problemet, dvs. filer/kataloger som en ikke lenger ser eller får tak i, skyldes det en feil som på et eller annet tidspunkt skjedde når vi oppgraderte tjenerene våre. Kort sagt fikk de et navn som inneholder tegn som ikke lovlige.

En litt lengre forklaring er at det ble benyttet en tegnsett (kodesett) som heter Code Page 850. Dette tegnsettet benytter områder i som det ikke er lov til å benytte når en bruker UTF-8.

For det andre problemet, filnavn og kataloger som bruker Latin1/ISO-8859-1, så vil vi tilby en kun-les volum som vil benytte dette tegnsette og som en kan kopiere over til det ordinære volumet.

http://samba.org/samba/docs/man/Samba-HOWTO-Collection/unicode.html

Tegnsett i Samba

(En skisse til introduksjon for problemer med tegnsett på filnavn/kataloger når en en monterer hjemmekatalogen vha Samba)

To ikke helt relaterte problemer:

Det ene er dokumenter (filer) og mapper (kataloger) som ikke vises i windows fra en montert samba-volum.

Dette skyldes sannsynligvis at det på et eller annet vis har fått konvertert æ, ø og å til verdier som er ugyldige både i UTF-8 og Latin 1 (ISO-8859-1). Disse har vi observert har følgende oktal-verdier: oktalverdier CP 850 0o221+in+decimal æ 0o222+in+decimal æ 0o217+in+decimal Å 0o206+in+decimal å 0o233+in+decimal ø 0o217+in+decimal Ø

Dette ligner mistenkelig på code page 850 (også kalt IBM 850). Noe har på et eller annet tidspunkt gått galt.

Oktalverdiene framkommer bla ved å benytte opsjonen -b for ls

En måte å konvertere filnavnene på er å lage et shell-script vha kommandoen tr for å konvertere til ISO-8859-1:

#! /bin/sh for i in *; do

done

Et kanskje bedre alternativ er å bruke iconv eller lignende for å konvertere filnavnene direkte til UTf-8:

#! /bin/sh for i in *; do

done

Det andre problemet knyttet til samba og tegnsett er at en tradisjonalt har brukt ISO-8859-1 når filnavn/kataloger lagres fra unix, mens en i nyere tid gjerne ser at en benytter Unicode til slikt fra Windows og Mac OS X.

Hvordan ser man forskjell på filer i UTF-8 og ISO-8859-1

Slik vil filene f.eks. se ut:

/store/gnu/bin/ls -1b
latin1:
AA-\305-1.txt
AE-\306-1.txt
OE-\330-1.txt
aa-\345-2.txt
ae-\346-2.txt
oe-\370-2.txt

utf8:
AA-\303\205-1.txt
AE-\303\206-1.txt
OE-\303\230-1.txt
aa-\303\245-2.txt
ae-\303\246-2.txt
oe-\303\270-2.txt

følgende:

find /home -local -name "*ø*" -type f

burde kanskje finne alle med utf8 ø i seg.

SambaOgTegnsettInfo (last edited 2005-02-22 16:09:15 by ErikHoumb)