Apache tegnkodning
Jeg har et problem som jeg slås med på min server, jeg har prøvet at google mig frem til en løsning og forklaring, men ja der har ikke været meget hjælp at hente der, så jeg håber en eller anden har en løsning på problemet...
Problemet er at jeg har opsat webserveren med debian & apache, jeg har opsat serveren & apache til at benytte da_DK.uft8, og aligevel bliver øæå til øæå ved overførsel af tekstfiler & html, eller hvis de bliver oprettet på serveres shell med nano, der sjovt nok kan vise øæå, det mest mærklige er at, hvis man gemmer tekst filenerne som ISO-8859-15 tekst dokument på klienten der også er opsat med da_DK.utf8 op uploader dem, så bliver øæå vist korrekt, hvis man gemmer dokumentet som almindelig tekst med uft8 så går det galt??? det burde ikke være sådan, men det er det...
sudo locale på serveren giver følgende:
LANG=da_DK.UTF-8
LANGUAGE=da_DK.utf8
LC_CTYPE="da_DK.utf8"
LC_NUMERIC="da_DK.utf8"
LC_TIME="da_DK.utf8"
LC_COLLATE="da_DK.utf8"
LC_MONETARY="da_DK.utf8"
LC_MESSAGES="da_DK.utf8"
LC_PAPER="da_DK.utf8"
LC_NAME="da_DK.utf8"
LC_ADDRESS="da_DK.utf8"
LC_TELEPHONE="da_DK.utf8"
LC_MEASUREMENT="da_DK.utf8"
LC_IDENTIFICATION="da_DK.utf8"
LC_ALL=da_DK.utf8
Er der nogen der kan give en fornuftig forklaring på hvordan man kommer det problem til livs, det ville være meget lettere bare at gemme et dokument, uden at først skulle gemme som og så vælge ISO-8859-15.
På forhånd tak.
Problemet er at jeg har opsat webserveren med debian & apache, jeg har opsat serveren & apache til at benytte da_DK.uft8, og aligevel bliver øæå til øæå ved overførsel af tekstfiler & html, eller hvis de bliver oprettet på serveres shell med nano, der sjovt nok kan vise øæå, det mest mærklige er at, hvis man gemmer tekst filenerne som ISO-8859-15 tekst dokument på klienten der også er opsat med da_DK.utf8 op uploader dem, så bliver øæå vist korrekt, hvis man gemmer dokumentet som almindelig tekst med uft8 så går det galt??? det burde ikke være sådan, men det er det...
sudo locale på serveren giver følgende:
LANG=da_DK.UTF-8
LANGUAGE=da_DK.utf8
LC_CTYPE="da_DK.utf8"
LC_NUMERIC="da_DK.utf8"
LC_TIME="da_DK.utf8"
LC_COLLATE="da_DK.utf8"
LC_MONETARY="da_DK.utf8"
LC_MESSAGES="da_DK.utf8"
LC_PAPER="da_DK.utf8"
LC_NAME="da_DK.utf8"
LC_ADDRESS="da_DK.utf8"
LC_TELEPHONE="da_DK.utf8"
LC_MEASUREMENT="da_DK.utf8"
LC_IDENTIFICATION="da_DK.utf8"
LC_ALL=da_DK.utf8
Er der nogen der kan give en fornuftig forklaring på hvordan man kommer det problem til livs, det ville være meget lettere bare at gemme et dokument, uden at først skulle gemme som og så vælge ISO-8859-15.
På forhånd tak.
Kommentarer8
Hvad siger websiderne?
#1 Den del fungere fint med
Gemmer man filer normalt som utf8 så vil øæå blive vist som kryptiske tegn, gemmer man filer som iso-8859-15 format bliver øæå vist korrekt.
Det er det jeg gerne vil undgå at skulle gøre.
På debian kan du sætte det
Du skal bare være klar over at det har en negativ effekt, hvis din server har filer der ikke er UTF-8, da de så vil blive vist forkert.
Du kan også prøve at kigge
http://httpd.apache.org/docs/2.2/mod/mod_mime.html#addcharset
#3 det er jeg godt klar over
problemet er at hvis jeg gør:
echo øæå > øæå.txt
og linker direkte til tekst filen, så bliver øæå vist som kryptiske tegn, selv om hele gøjemøjet er sat til da_DK.utf8 og vises som øæå i nano og cat øæå.txt
Den vil med vold og magt IKKE vise korrekt tegn før filen er gemt som iso-8859-15 format, ikke som da_DK.utf8 eller utf8, det er den lille idiotiske ting jeg vil undgå.
baah haha elefant fejlen...
#5 som du nævnte angående /etc/apache2/conf.d/charset
AddDefaultCharset UTF-8
jeg havde sat min til AddDefaultCharset da_DK.UTF-8
jeg fant ud af at man kan sætte tegnkodning i .htaccess med:
AddCharset UTF-8 .txt .html .htm .php
men tak for hjælpen ;-) så det bare at rette alle de filer der har ugyldif tegnkodning :-)
Rart, du selv fandt en bedre
Det tegnsæt du skrev før, er så vidt jeg forstår på dokumentationen forkert.
Det skal være på listen "IANA registered charset values" http://www.iana.org/assignments/character-sets/character-sets.xml, derfor kun "UTF-8" og ikke da_DK.utf8.
(Du kan også sætte AddDefaultCharset i din .htaccess-fil, det gør mit wordpress site. Så gælder det for alle filtyper i dit site.)
jow jow men det virkede bare
UPDATE: faldt lige over dette script der kan konvertere alle filer der er gemt som iso-8859-15 til utf-8
#!/bin/bash
FROM=iso-8859-15
TO=utf-8
ICONV="iconv -f $FROM -t $TO"
# Convert
find ./ -type f -name "*" | while read fn; do
cp ${fn} ${fn}.bak
$ICONV < ${fn}.bak > ${fn}
rm ${fn}.bak
done
Det lettede arbejdet en stor del.