Avatar billede mr-kill Nybegynder
20. april 2008 - 19:39 Der er 9 kommentarer og
1 løsning

C# til php til Mysql - encoding?

Jeg har et program, skrevet i C#, der sender noget data til min server, som så kigger det igennem og ligger noget af det i en MySQL database.

Problemet er at ÆØÅ ikke gemmes rigtig i databasen. Jeg ved ikke hvad encoding det hele er, men den må jo være gal et sted. Hvis jeg tjekker længden af en $_POST der kommer fra mit program, så fylder æ,ø og å hver 2 tegn, så jeg tror det er php der læser dem forkert.

Hvad kan jeg gøre for at få php til at bruge den rigtige encoding?
Avatar billede erikjacobsen Ekspert
20. april 2008 - 19:44 #1
De er sandsynligvis i UTF-8 format. Hvis du blot sætter websiden op til UTF-8 skulle det blive vist korrekt.
Avatar billede mr-kill Nybegynder
20. april 2008 - 19:57 #2
det skal ikke vises noget sted på siden.. det eneste det tæller er at det bliver gemt rigtigt i databasen..
Avatar billede erikjacobsen Ekspert
20. april 2008 - 19:58 #3
UTF-8 er en udmærket encoding.
Avatar billede mr-kill Nybegynder
20. april 2008 - 20:01 #4
Okey :)

men jeg har nu prøvet at skrive: header('Content-type: text/html; charset=UTF-8') ; øverst på siden, men den gemmer stadig ikke æøå rigtig i databasen
Avatar billede erikjacobsen Ekspert
20. april 2008 - 20:09 #5
Men så er det vel fordi du har en anden opfattelse af "rigtig" ;)

Utf-8 kan sagtens være korrekt - men alle led skal så bruge det. Ud fra dine oplysninger, er det vist det eneste jeg kan hjælpe med.
Avatar billede mr-kill Nybegynder
20. april 2008 - 20:12 #6
Når jeg mener "rigtig" så er det at den giver rigtig længde på strlen og at den viser det rigtig når jeg kigger tabellen i phpMyAdmin.
Avatar billede erikjacobsen Ekspert
20. april 2008 - 20:20 #7
Når det nu er en UTF-8 streng, så er det en såkaldt "multibyte" streng i PHP-forstand. Den kan jo ikke vide hvad du kommer med. Derfor skal den have det at vide, li'som du sætter charset. Se på dette:

  $s="Blåbærgrød";    // i UTF-8

  print strlen($s);  // udskriver 13
  print "<br>";

  print mb_strlen($s,'UTF-8');  // udskriver 10

phpmyadmin må vel også kunne sættes til at bruge utf-8.

Ellers er der også muligheden for at gøre som i gamle dage: bruge iso-8859-1, og det kan din C#-del sikker også sættes til.
Avatar billede mr-kill Nybegynder
20. april 2008 - 20:27 #8
Jeg fik den rigtige værdi ud med mb_strlen($s,'UTF-8');

super :D

smid et svar
Avatar billede erikjacobsen Ekspert
20. april 2008 - 20:37 #9
Jeg samler slet ikke på point, tak. Svar selv, accepter dit eget svar. ;)
Avatar billede mr-kill Nybegynder
20. april 2008 - 20:59 #10
okey.. men tak for hjælpen!
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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