Avatar billede engberg Juniormester
16. august 2016 - 11:33 Der er 6 kommentarer og
1 løsning

UTF-8 bliver til noget rod på siden?

Hej

Min webside er gemt i UTF-8 uden Bom, den connecter til Gigahosts db-server som er utf8mb4_danish_ci (Gigahost standard).
Min db er utf8_danish_ci og tabellerne er utf8_danish_ci.

Jeg har sat <meta charset="UTF-8"> og chrome opdager den også som UTF-8

- men alligevel kommer der sorte ruder med spørgsmålstegn for æøå.
Hvor går det galt for mig?

I kan se problemet ved at gå til:
http://pox.dk/gamify/
og logge ind med
test@test.dk:serut

engberg.
Avatar billede olsensweb.dk Ekspert
16. august 2016 - 11:50 #1
er det data der kommer fra databasen ??
hvis ja: har du sat et tegnset på din connection ?? (gør det)
http://php.net/manual/en/mysqli.set-charset.php
Avatar billede engberg Juniormester
16. august 2016 - 11:56 #2
Min connection ser sådan her ud:

$db = mysql_connect($dbserver,$dbuser,$dbpass);

mysql_select_db($dbname,$db);

$result = mysql_query("SELECT * FROM Topics",$db) or die ($db_fejl.mysql_error());

Jeg er lidt utryg ved det ekstra "i" du har med, og som også er i linket... :-/
Avatar billede engberg Juniormester
16. august 2016 - 12:11 #3
Ok, kan se jeg hellere må hoppe ombord i mysqli en gang - men lidt googling efter dit svar Ronols, så fandt jeg den her:

mysql_set_charset('utf8',$db);

og smed den ind lige før mysql_select - og det gjorde tricket - TAK!
Avatar billede olsensweb.dk Ekspert
16. august 2016 - 12:35 #4
>så fandt jeg den her:
>mysql_set_charset('utf8',$db);
ja


>Ok, kan se jeg hellere må hoppe ombord i mysqli en gang
jo før, jo bedre
det gamle mysql API er fjernet i PHP7
ref http://php.net/manual/en/function.mysql-connect.php

Warning
This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information.



*************
det nemmeste er at skifte til mysqli, i mysqli kan du anvende 2 styles frit som du har lyst

procedural style: som du kender fra det gamle mysql, der er grundlæggende bare tilføjet et i, i alle mysql_ kommandoerne så de hedder mysqli_, og ved mange af dem skal du også angive din connection

OOP style: dette er det der anvendes mest, og er fremtiden

Prepare Statement: er noget af det nye der er kommet til i mysqli, en kvik guide lå http://www.eksperten.dk/guide/1480
du har kun numbered place holders

kan nu findes på http://archive.org/web/
indtast www.eksperten.dk/guide/1480 i søge feltet
vælg sidst gemte dato her april 13, 2016


*************

PDO: dette ser jeg som det fremtidige ext (API), du kan kun anvende OOP style, tilgengæld har du alle fordele fra ODBC men ikke ulemperne ved at skulle installerer en system driver

Prepare Statement: er klart forbedret i forhold til mysqli
du har numbered placeholders og named placeholders, sidst nævnte er klart nemmere at læse IMHO
********************
Avatar billede arne_v Ekspert
16. august 2016 - 16:04 #5
PDO kraever ogsaa en driver installeret.

Men der er den fordel at PHP kommed med PDO drivere for: MySQL, Oracle, PostgreSQL, SQLite og ODBC.
Avatar billede engberg Juniormester
17. august 2016 - 07:43 #6
Mange tak for bonus-info - ud over at få mit site op igen, så er der gode idéer til næste omgang php.

Super stil !
Avatar billede hanibald Mester
29. august 2016 - 22:43 #7
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