Avatar billede Morten Professor
29. marts 2017 - 08:11 Der er 2 kommentarer og
1 løsning

Tegnsætning i function php mysqli

Hej Eksperter

Så kan jeg igang med at sætte så meget som muligt op i function.
Det er ret smart :oD
Men oplever på problemer med tegnsætning.
Har prøvet at ordne det med $con->set_charset("utf8");
Virker fint på wampserver, men ikke på mit hotel, men det skulle da ikke have noget sige.
Har aldrig oplevet problemet før.
Lige nu er siden i test fase ny.syddanske.dk der kan i se det under menuen feks. under info.
Og under overskrifter ved de links der er mærkelige tegn.

Her er koden
$con->set_charset("utf8");
function info_menu($con, $info_undermenu){
   
    /* Se Info */
    if ($stmt = $con->prepare('SELECT `id`, `banner`, `baggrund`, `mailform`, `menu`, `undermenu`, `overskrift`, `tekst`, `subtext`, `billede`, `hoejde`, `bredde`, `skrevetaf`, `datotid`, `boxid`, `bioid`, `muid`, `artid`, `artu`, `linkid`, `url` FROM `opstilling` WHERE mid = ?' )) {
        /* Bind parametre */
        $stmt->bind_param('i', $mid);

        /* Sæt værdier på parametrene */
        $mid = 2;

        /* Eksekver forespørgslen */
        $stmt->execute();

        /* Bind resultatet */
        $stmt->bind_result($id, $banner, $baggrund, $mailform, $menu, $undermenu, $overskrift, $tekst, $subtext, $billede, $hoejde, $bredde, $skrevetaf, $datotid, $boxid, $mid, $muid, $info_artid, $artu, $linkid, $url);
        while ($stmt->fetch()) {
"Her står der selvfølge noget med syntes det fylder så skrev det ikke"
            }}
?>

Tegnsæt i databasen er utf8_danish_ci.
På siderne er tegnsætningen
<meta charset="iso-8859-1">

Har prøvet at teste med UTF-8 men virkede heller ikke.

Håber der er nogen der kan hjælpe.

Med venlig hilsen
Morten
Avatar billede jakobdo Ekspert
29. marts 2017 - 08:42 #1
Jeg vil klart anbefale at skifte:

<meta charset="iso-8859-1">

til:

<meta charset="utf-8">
Avatar billede repox Seniormester
29. marts 2017 - 08:42 #2

"Men oplever på problemer med tegnsætning."


Det er ikke super informativt, så det kan være svært at komme med en løsning på dit problem.

Overordnet set skal du sikre dig at du ikke blander tegnsæt og det kan ske forskellige steder.

Jeg ved ikke hvordan WAMP fungerer, men der er som udgangspunkt måder at tegnsættet bestemmes for browseren.

Enten fortæller webserveren hvilket tegnsæt der skal bruges eller også gør HTML'en. Browseren anvender kun det anvendte tegnsæt defineret i HTML'en, hvis ikke serveren fortæller hvilket tegnsæt der er tale om. Hvis serveren fortæller det, ignoreres HTML'en.

Så hvis din WAMP eksempelvis fortæller din browser at dine sider præsenteres i ISO-8859-1, men din hosting udbyder præsenterer det i UTF-8 (eller omvendt) så har du selvfølgelig problemer hele vejen ned i koden.

Det er noget som du selvfølgelig skal undersøge ved at kigge på de response headers der kommer fra dine sider.

Men som udgangspunkt, så sørg for at anvende det samme tegnsæt alle steder:

<?php
header('Content-Type: text/html; charset=utf-8'); // hvis webserveren serverer ISO-8859-1

...
$con->set_charset("utf8"); // MySQLI character set
?>
<html>
...
<meta charset="UTF-8">
...
</html>
Avatar billede Morten Professor
29. marts 2017 - 09:00 #3
header('Content-Type: text/html; charset=utf-8'); // hvis webserveren serverer ISO-8859-1

Det virkede ;o)

Mange tak for hjælpen

Og tak for den gode forklaring på problemet.

Med venlig hilsen
Morten
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