Hej Kasper.
Som Kim pointerer, så hænger dit problem sammen med kommunikationen mellem din database og din webserver.
Eftersom dine special karakterer bliver vist med et spørgsmålstegn i selve HTTP responsen, og ikke i databasen, lyder det til, at det er PHP det ikke har fået instrukser til at skrive responsen i UTF-8 formatet.
Der er heldigvis nogle fixes. Du kan eventuelt prøve med funktionerne
mysqli::set_charset samt mysqli::character_set_name. Såfremt det ikke virker, følg eksemplet under den første kodeblok. Såfremt det heller ikke virker er du mere end velkommen til at vende tilbage!
Prøv eventuelt følgende, og se om ikke det giver et godt resultat.
- <?php
- $dbh = new mysqli('localhost', 'username', 'password', 'db');
- # Tjek om karakter-sættet er andet end utf-8
- if ($dbh -> character_set_name() != 'utf8')
- {
- # Såfremt det er, så sæt karakter-sættet til utf-8
- $dbh -> set_charset('utf8');
- }
- ?>
Såfremt det ikke virker, så prøv følgende:
(skal smides ind i php.ini eller .htaccess!)
mbstring.language = Neutral ; Set default language to Neutral(UTF-8) (default)
mbstring.internal_encoding = UTF-8 ; Set default internal encoding to UTF-8
mbstring.encoding_translation = On ; HTTP input encoding translation is enabled
mbstring.http_input = auto ; Set HTTP input character set dectection to auto
mbstring.http_output = UTF-8 ; Set HTTP output encoding to UTF-8
mbstring.detect_order = auto ; Set default character encoding detection order to auto
mbstring.substitute_character = none ; Do not print invalid characters
default_charset = UTF-8 ; Default character set for auto content type header
(kilde:
http://blog.loftdigital.com/blog/php-utf-8-cheatsheet)Der er i øvrig flere forskellige skridt i det cheatsheet. Prøv at følge den såfremt hverken den ene eller anden løsning her har virket.
Indlæg senest redigeret d. 11.12.2013 14:45 af Bruger #16122