Gå til innhold

PHP-kode for dag viser feil


Anbefalte innlegg

Jeg har en php-kode som på en side viser hvilken ukedag det er på norsk.

Denne koden har funket greit frem til nå hvor php ble oppgradert til 7.2 og dagen vises feil. 

Problemet er at lørdag og søndag vises som  l�rdag eller s�ndag.

Koden er som følger;

<?php
setlocale(LC_ALL,'no_NO');
echo strftime("%A");
echo " ";
echo date("d.m.Y");

?>

Jeg har passet på at filen er UTF-8, etter anbefaling fra webleverandør, og at det i metataggene også angis at det er UTF-8.

Jeg har forsøkt med htmlentities og htmlspecialchars, men uten hell, da blir det bare blankt område.

Noen som kan gi meg noen hint/hjelp på veien

Lenke til kommentar
Videoannonse
Annonse

PHP har tilnærmet ingen støtte for UTF-8 og Unicode, så her er det mange fallgruver å falle i :(

 

Det du mest sannsynligvis er ute etter er dog

header('Content-Type: text/html; charset=utf-8');

Denne bør legges inn så tidlig som mulig da det ikke fungerer hvis «header» allerede er sendt (skjer typisk i det man skriver ut noe)

Endret av Ernie
Lenke til kommentar

Vil tro det er serveren som ikke forteller nettleseren at det er UTF-8-enkodet innhold.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Du kan i Chrome se hva serveren forteller nettleseren at innholdet er (F12 -> network -> se igjennom headers som sendes).

 

PS: Angående tid i PHP: http://php.net/manual/en/function.date-default-timezone-set.php

PHP har tilnærmet ingen støtte for UTF-8 og Unicode, så her er det mange fallgruver å falle i :(

 

Det du mest sannsynligvis er ute etter er dog

header('Content-Type: text/html; charset=utf-8');
Denne bør legges inn så tidlig som mulig da det ikke fungerer hvis «header» allerede er sendt (skjer typisk i det man skriver ut noe)
Les alt jeg skriver før noen eventuelt svarer;

 

Som jeg skrev i mitt innlegg så er filen lagret som UTF-8, og jeg har lagt inn UTF-8 Metatag-feltet. La også inn i Header nå for å prøve.

 

Uansett funker det fremdeles ikke. Jeg la til æøå i ren tekst i filen vises dette som det skal, men det datoscriptet mitt virker ikke. Koden ligger i øverste innlegget

 

Problemene startet etter at PHP ble oppgradert til 7.2. Webhost sier dette skyldes at UTF-8 ikke er angitt riktig.

Endret av abrj
Lenke til kommentar

Ah, nå skjønner jeg hva som foregår. Les heller hva jeg skriver du ;)

 

 

PHP har tilnærmet ingen støtte for UTF-8 og Unicode, så her er det mange fallgruver å falle i :(

Jeg tror du her har funnet en av fallgruvene. Det jeg tror skjer her er at strftime-funksjonen gir deg tekst i et eller annet 8 bit tegnsett tilbake (mistenker ISO 8859-1 / Latin1). Du kan prøve med følgende:

setlocale(LC_ALL,'no_NO.UTF-8');

eller (vil kreve at dataene faktisk er ISO 8859-1, så hvis det er Windows-1252 er det ikke sikkert det gir 100% korrekt resultat):

echo utf8_encode(strftime("%A"));

Alternativt, og hvis du har mbstring installert på serveren kan du forsøke med

echo mb_convert_encoding(strftime("%A"), "UTF-8");

Det går an å slenge på en tredje parameter til funksjonen for å spesifisere det tegnsette dataene inn har.

 

Redigering: Fikset en litt vel åpenbar feil i koden min

Endret av Ernie
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...