æøå blir til æøå

En tråd i 'PHP, SQL og databaser' startet av kongen, 18 Jan 2014.

  1. kongen

    kongen kongemedlem

    Innlegg:
    2.748
    Når jeg lagrer fra webskjema til database så blir æøå fra skjemaet til æøå i databasen.

    database er utf8_danish_ci
    php-fil med webskjema er utf-8

    Hvis jeg skifter til latin1_danish_ci og iso-8859-1
    så lagres æøå som æøå i databasen, men
    da blir æøå til %E6%F8%E5 i php $verdier og url'er
    og hele nettstedet blir fucka.

    Hvordan kan jeg bruke utf-8 på nettstedet samtidig
    som at æøå lagres som æøå i databasen?
     
  2. spikre

    spikre peterhamre.no

    Innlegg:
    1.308
    Det spiller ingen rolle hvordan det "vises" i phpmyadmiin, gjør det vell?
     
  3. Travellingman

    Travellingman Nettgrunder

    Innlegg:
    2.113
    WordPress det er snakk om? Bruker du en plugin til dette skjemaet? Kan i så fall være i plugin det ligger....
     
  4. Jan W. Medlem

    Innlegg:
    136
    Når det gjelder wordpress har jeg liten erfaring, men generelt er det snakk om å "fortelle php at vi bruker en utf-8 database"

    Mysql:

    PHP:
    mysql_query('SET NAMES UTF8;');
    Mysqli:

    PHP:
    $db->query("SET NAMES utf8");
    Om du bruker en config-fil er dette den beste plassen å gjøre dette, eller evt i gjeldende script
     
  5. kongen

    kongen kongemedlem

    Innlegg:
    2.748
    Nei, det spiller ingen rolle hvordan det vises i phpmyadmin fordi jeg bruker ikke phpmyadmin


    Bruker ikke Wordpress, dette er noe egenkodet greier


    Har forsøkt med dette uten å lykkes:

    PHP:
    mysql_query("SET NAMES 'utf8'"$mysqlconnection);
    mysql_query("SET CHARACTER_SET 'utf8'"$mysqlconnection);

    og

    mysql_query
    ('SET NAMES UTF8;');
    mysql_query('SET CHARACTER_SET UTF8;');

    og

    mysql_query
    ('SET NAMES UTF8;'$mysqlconnection);
    mysql_query('SET CHARACTER_SET UTF8;'$mysqlconnection);

    og

    mysql_query
    ('SET NAMES UTF8'$mysqlconnection);
    mysql_query('SET CHARACTER_SET UTF8'$mysqlconnection);
    Har også flettet inn noe mysqli_real_escape_string uten at det hadde noen virkning

    Bør alt være kodet for mysqli og ikke mysql?
     
  6. Jan W. Medlem

    Innlegg:
    136
    Er vel en fordel å gå over til mysqli på nye prosjekter, men blande mysql og mysqli er ikke tilrådelig. Hvor har du prøvd med SET NAMES i scriptet ditt?

    En annen ting. Regner med at du har en grensesnitt du oppdaterer databasen fra, har den riktig tegnkoding?
    HTML:
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
     
    Sist redigert: 18 Jan 2014
  7. kongen

    kongen kongemedlem

    Innlegg:
    2.748
    PHP:
    $navn=$_POST['navn'];
    $mysqlconnection=mysqli_connect("host","user","pw","db");
    if (
    mysqli_connect_errno()) {
    echo 
    "Failed to connect to MySQL: " mysqli_connect_error();
    }
    mysql_query('SET NAMES UTF8'$mysqlconnection);
    mysql_query('SET CHARACTER_SET UTF8'$mysqlconnection);
    $navn mysqli_real_escape_string($mysqlconnection$navn);
    $insertdb="INSERT INTO db (navn) VALUES ('$navn')";
    Ja, på siden webskjemaet ligger er det meta utf. Det er ikke noe meta-ting i php-filen som skal sende til database.
     
  8. kongen

    kongen kongemedlem

    Innlegg:
    2.748
    Fikset, nå funker det. Takk :)

    PHP:
    $mysqlconnection->query("SET NAMES utf8");

    istedet for

    mysql_query('SET NAMES UTF8;');
     

Del denne siden