Avatar billede masteraaen Novice
11. juni 2012 - 12:35 Der er 5 kommentarer og
1 løsning

Indsætte æ, ø og å i mysql (post fra site)

Hej.

jeg har følgende setup:

Site i php, herunder med forms til udfyldelse og POST.
Database: Mysql.

Jeg kan dog ikke få hjemmesiden til at opdatere værdierne med æ, ø og å. Det bliver til nogle andre underlige tegn, fx. et spørgsmålstegn  i stedet for ø....

Hvorfor kan jeg ikke få det ind i databasen?

I min connection har jeg:
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die                      ('Error connecting to mysql');

mysql_query("SET NAMES utf8");
mysql_query("SET character_set_results='utf8', $conn");

og i PHP-admin har jeg i mysql-tabellen valgt det pågældende felt til "utf8_danish_ci" i feltet "Kollation"...

Men det virker ikke... Er der nogen, der kan hjælpe?
Avatar billede olsensweb.dk Ekspert
11. juni 2012 - 12:54 #1
jeg ville skifte dette
mysql_query("SET NAMES utf8");
mysql_query("SET character_set_results='utf8', $conn");

ud med mysql-set-charset
og så ellers sørger forat kører UTF-8 hele vejen rundt

og overvej at anvende mysqli istedet for det gamle mysql api
Avatar billede masteraaen Novice
11. juni 2012 - 15:27 #2
Nu har jeg udskiftet
mysql_query("SET NAMES utf8");
mysql_query("SET character_set_results='utf8', $conn");

til
mysql_set_charset('utf8',$conn);

Både hvor forbindelse oprettes, når jeg skal have data ind í og ud af databasen. Men lige lidt hjælper det.

I php admin kan jeg se, der står
MySQL forbindelses-sammenkøring: utf8_general_ci i de generelle indstillinger.

På selve feltet i tabellen (Kollation) står der stadigvæk "utf8_danish_ci" som ovenfor skrevet.

I mine øjne, burde det vel være "hele vejen rundt"?

Det undrer mig mig, jeg ikke kan få de specialtegn frem :-(

Det skal lige siges, at det kun er et problem ifm databasen. Alle øvrige steder på siden, er der ikke noget problem.

Jeg forstår ikke det med mysqli i stedet for mysql api, herunder hvor man vælger det ene frem for det andet...(har det noget med det her at gøre?)
Avatar billede masteraaen Novice
11. juni 2012 - 15:29 #3
Lige i øjeblikket "cuttes" alt til højre for specialtegn, når jeg indsætter det i databasen :-(
Avatar billede olsensweb.dk Ekspert
11. juni 2012 - 17:51 #4
utf8_general_ci  bør være utf8_danish_ci

>I mine øjne, burde det vel være "hele vejen rundt"?
* er din php fil encodet med utf-8
* er din php fil gemt som utf-8 uden BOM
* er alle includerede filer utf-8
* er sidens charset sat til utf-8
( <meta http-equiv="content-type" content="text/html; charset=utf-8" > )
* nb lig mærke til det arne_v skriver i http://www.eksperten.dk/spm/956216 #9

kan du svare ja ovenstående ja så burde du kører utf-8 hele vejen rundt

>Jeg forstår ikke det med mysqli i stedet for mysql api
det er det php interface du anvender mod databasen,
mysql_xxx vil hedde mysqli_
eks mysql_set_charset('utf8',$conn); ville hedde mysqli_set_charset($conn, "utf8");
i står for improved, den er forbedre med en del ting:
næsten bagud kompatibel, med at anvende Procedural style som du er vant til (parameter rækkefølgen er byttet om, og der er tilføjet et i, connection er nu påkrævet, var det ikke før)
nyt kan anvende Object oriented style
nyt kan anvende Prepared Statements læs evt OleBole's guide Prepared Statements under MySQLI - kom igang
Avatar billede masteraaen Novice
14. juni 2012 - 19:48 #5
Tak - jeg havde ikke utf8_danish_ci i <head>-tag.... TAK! :-)

Vil du lave et svar :-)
Avatar billede olsensweb.dk Ekspert
14. juni 2012 - 20:01 #6
får du her
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