← Back to team overview

sslug-teknik team mailing list archive

Re: Problemer med bogstaver efter opdatering af samba

 

Finn Johannessen skrev:

> Det virker for alle nyoprettede filer.... men ikke for dem der
> ligger der i forvejen...

Godt.

Så skal du bare have omdøbt alle de filer, hvis navne giver mening i
UTF-8, til navne der giver mening i ISO-8859-1.

Selve omkodningen af et filnavn fra UTF-8 til ISO-8859-1 kan klares
med kommandoen:

   nyt="$(echo "${gammelt}" | recode --quiet --force UTF-8..ISO-8859-1)"

Det svære er at adskille omkodningen af katalognavnene og katalogernes
indholds navne.  En måde det kan klares på er nok omtrent således
(uafprøvet, virker ikke med linjeskift i filnavne):

   cd /utf-8-kodet-katalog/
   find . -type f | while read gammelt; do
      fejl=nej
      nyt="$(echo "${gammelt}" | recode --quiet --force UTF-8..ISO-8859-1 || fejl=ja)"

      if [ ${fejl} = ja ]; then
         echo "Kunne ikke omkode '${gammelt}' fra UTF-8 til ISO-8859-1." 1>&2
      elif [ -e "${gammelt}" ]; then
         nyt_katalog="/iso-8859-1-kodet-katalog/$(dirname "${nyt}")"
         mkdir -p "${nyt_katalog}"
         mv -i "${gammelt}" "${nyt}"
      else
         echo "Der er problemer med '${gammelt}'." 1>&2
      fi
   done

> Det drejer sig om 539148 + 390646 filer på de 2 servere... så der
> skal en stor konvertering igang....

Det er en smule afbejde, men det kan heldigvis automatiseres.

> PS: jeg har en testserver stående.... hvor jeg har fat i de samme filer som 
> på den oprindelige server....
> Her har jeg oprettet et bibliotek hvor en mappe hedder "Værksteds 0rdre 
> 2000"...
>
> Og med LANG="en_US.UTF-8" vises denne som "V?rksteds 0rdre 2000"
> dir viser her  "V\346rksteds\ 0rdre\ 2000"
>
> Og med LANG="da_DK" vises denne som "Værksteds 0rdre 2000"
> dir viser her "Værksteds\ 0rdre\ 2000"

Det ser jo godt nok ud.

Jacob
-- 
"Computer Science is to Science, as Plumbing is to Hydrodynamics"


Follow ups

References