Avatar billede mrfunder Nybegynder
30. maj 2009 - 12:35 Der er 9 kommentarer

strftime viser ikke korrekt æøå

Hej Eksperter!

Jeg har nogle problemer med at vise strftime("%A d. %d %B %Y", $head_event) korrekt. Lige pt. fremtræder specielle tegn som æøå som sorte spørgsmålstegn.

Mine filer har en utf-8 encoding, mit charset er utf-8 og setlocale er sat til danish.

setlocale(LC_ALL, 'danish');

Hvad gør jeg galt?
Avatar billede mrfunder Nybegynder
30. maj 2009 - 12:46 #1
Jeg kan desuden oplyse at min tidsværdi er hentet fra en kolonne af typen date, og er så i udtrækket lavet om til time via UNIX_TIMESTAMP()

Tabellen i databasen har kollationen utf8_danish_ci
Avatar billede ebusiness Nybegynder
30. maj 2009 - 13:15 #2
Hmm, sådan en skodfunktion. Men du kan nok køre en replace på strengen, hvis du bare trækker det forkerte ø ud af en Lørdag så kan du bruge det til at erstatte ø'erne med ø
Avatar billede acore Ekspert
30. maj 2009 - 13:42 #3
Hvis der kommer "lørdag" ud af det, men ø'et fremtræder som et sort firkant, så tror jeg ikke det har noget med strftime eller setlocaler at gøre, for begge virker jo.

På nogen servere er det nødvendigt at erstatte ø med ø osv (som ebusiness skriver). Det kan du gøre med:

$s = htmlentities(strftime(...), ENT_QUOTES);
Avatar billede mrfunder Nybegynder
30. maj 2009 - 14:03 #4
Hej med jer, tak for svar..

Først og fremmest har jeg inden jeg oprettede tråden forsøgt mig med funktionen:

function format_special_chars($string) {

$good = array("Ø", "ø", "Æ", "æ", "Å", "å");
$bad  = array("Ø", "ø", "Æ", "æ;", "Å", "å");

return $string = str_replace($good, $bad, $string);
}

Det virkede dog ikke, Lørdag med ø som et spørgsmåltegn optræder stadig dårligt..


'.htmlentities(strftime("%A d. %d %B", $fetch_events['time_date']), ENT_QUOTES).'

Virker desværre heller ikke, det fremstår stadig med ø som spørgsmålstegn :/
Avatar billede ebusiness Nybegynder
30. maj 2009 - 16:35 #5
Ok, lad os prøve med en replace funktion.

ereg_replace("[^a-zA-Z0-9\.\,\ ]","ø",strftime("%A d. %d %B", $fetch_events['time_date']));

Min regexp er lidt rusten, men med mindre jeg har lavet en fejl så erstatter ovenstående funktion alle andre tegn end alphanumeriske og nogle få andre med ø. Det skulle gerne virke eftersom ø er det eneste danske bogstav i uge og månedsnavne.
Avatar billede acore Ekspert
30. maj 2009 - 20:12 #6
Kan du ikke med Vis-Kilde sikre dig, at du har fået "ø" lavet om til "ø" - man begynder at tvivle, når flere "velanskrevne" metoder ikke duer (din egen og min ;)).
Avatar billede ebusiness Nybegynder
30. maj 2009 - 20:53 #7
Problemet er jo at det indenfor det tegnsæt som han arbejder i slet ikke er et ø til at starte med, men blot karakteren som i et eller andet tegnsæt er et ø, det hjælper ikke at lede efter unicode ø'er, for hvis det var et sådant ville der ikke være noget problem til at starte med.
Avatar billede webweaver Praktikant
01. juni 2009 - 22:38 #8
Er du sikker på at dine filer er gemt som utf-8?

Prøv at åhne dem i Notepad og gem som, og sætte den til utf-8 den vej igennem.
Avatar billede Albert Praktikant
29. april 2018 - 17:08 #9
Til alle dem som (lige som mig) finder den her gamle tråd på Google har jeg fundet løsningen :)

setlocale(LC_ALL, "da_DK.UTF-8");
(Fra: http://php.net/manual/en/function.setlocale.php)
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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