Avatar billede binderup Nybegynder
02. november 2005 - 10:51 Der er 11 kommentarer og
1 løsning

brug af danske bogstaver i variabler

Jeg er ved at flytte et site for en bruger fra en server til en anden, og jeg har kunnet konstatere at der mange steder i koden er brugt danske special bogstaver i variabelnavne. Det virker (magi) på den gamle server, men giver problemer på den nye server.

Hvordan kan jeg for dette site få Apache/PHP til at forstå æøå i variable navne (GET og POST samt internt).

At ændre alle steder til at det ikke er æøå er ikke en brugbar løsning.

Og hvor er det da ringe at jeg ikke kan oprette et spørgsmål vhroi der står "æøå" - jeg får at vide at det ikke beskriver mit problem - jo det gør - suk.
Avatar billede nizo Nybegynder
02. november 2005 - 12:06 #1
Brug HTML!

Ved hver string du sender ligger du en lille replace function ind:

<?
function danish_replace( $str )
{
    $str=str_replace("æ", '&aelig;', $str);
    $str=str_replace("ø", '&oslash;', $str);
    $str=str_replace("å", '&aring;', $str);
    $str=str_replace("Æ", '&Aelig;', $str);
    $str=str_replace("Ø", '&Oslash;', $str);
    $str=str_replace("Å", '&Aring;', $str);
    return $str;
}
?>

Naar der er en POST/GET der skal sendes laver du bare $data=danish_replace($string);
Avatar billede olebole Juniormester
02. november 2005 - 12:10 #2
<ole>

At bytte tegn ud er at trampe på thermometret ... patienten er stadig syg  ;o)
Man bruger naturligvis ikke specialtegn i variabler og filnavne ... det er så enkelt, som det kan være  :)

/mvh
</bole>
Avatar billede binderup Nybegynder
02. november 2005 - 13:06 #3
men ikke desto mindre virker det på den gamle server - at koden tidligere har været mindre heldig kan jeg desværre ikke gøre meget ved - det er for omstændigt at skrive den om $$.

Nizo - den løsning virker ikke - det er er ikke en string der skal outputtes - det er selve variabel navnet der indeholder et æøå f.eks. "$leverandør"
Avatar billede nizo Nybegynder
02. november 2005 - 15:56 #4
Hvis der er variablen, er det ikke muligt saa hvidt jeg ved.

Jeg tænkte paa det man tit ser paa sider hvis server ikke forstaar æøå men kun HTML'et og naar de ikke forstaar det, bliver det bare til et "?", men det kan ogsaa være fordi skrifttypen ikke har tegnet i sig.
Avatar billede wuggawugga Nybegynder
03. november 2005 - 13:39 #5
Mon ikke den gamle server har brugt utf-8 tegnsæt, hvor den nye måske bruger iso-8859/latin1?
Hvilket OS kører du på maskinerne?
Avatar billede binderup Nybegynder
03. november 2005 - 13:40 #6
den gamle server er en old nordisk version af Red Hat - hvor den nye er en ubuntu install.
Avatar billede wuggawugga Nybegynder
03. november 2005 - 13:53 #7
Jeg mener at redhat er glade for utf-8, så det er sikkert grunden til at den kunne godtage danske tegn. Hvis det er tilfældet er løsningen at få din nye PHP installation til at bruge utf-8.
Jeg er ikke sikker på hvor dybt problemet stikker.

Prøv at se på default_charset indstillingen i php.ini og den tilsvarende i apache.
Avatar billede binderup Nybegynder
03. november 2005 - 14:01 #8
jeg har rettet apache til i conf til at have default charset til iso8859.

tilsvarende i php.ini det har dog ikke den store ændring.
Avatar billede wuggawugga Nybegynder
03. november 2005 - 14:05 #9
Det er nok utf-8 du skal bruge. Jeg har selv haft problemer med forskelle mellem de to tegnsæt, og det kan drille rigtigt meget.
Jeg skal dog ikke kunne sige med sikkerhed om det virkeligt er det der er galt. Prøv at checke phpinfo() på begge maskiner hvis du kan. De skal helst ligne hinanden mest muligt.
Avatar billede binderup Nybegynder
03. november 2005 - 14:11 #10
de ligner ikke hinanden med vilje - vi har valgt at køre med Ubuntu pakker for php/apache/mysql for at gøre vedligeholdelse nemmere for fremtiden - jeg har prøvet på min egen udviklings maskine (med egen kompileret php/apache) og her har jeg heller ikke kunnet få variablenavne med æøå til at virke.

Pokker tag de irriterende danske specialtegn :-)
Avatar billede wuggawugga Nybegynder
03. november 2005 - 14:18 #11
Jeg ved at understøttelse for de forskellige tegnsæt kan konfigureres helt ned til kernel niveau, så der er mange steder hvor det kan gå galt derfra og så op til din PHP fortolker. Bare hvis du overfører utf-8 filer til en maskine der kun bruger iso-8859-1, kan de danske tegn blive lavet om til ubrugeligt skrammel. Jeg har selv været der. Dog har jeg været lidt mere heldig end dig ;)
Du kan evt. teste med en windows install. Jeg mener at windows er 100% utf-8.
Men den simple løsning er nok en rekursiv search/replace hvor du erstatter alle danske tegn.
Avatar billede binderup Nybegynder
21. april 2006 - 08:58 #12
lukker - har omskrevet nogle enkelte sider, så det på front end ikke giver problemer
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester