æøå blir til æøå

kongen

kongemedlem
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?
 

Jan W.

Medlem
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
 

kongen

kongemedlem
Det spiller ingen rolle hvordan det "vises" i phpmyadmiin, gjør det vell?

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


WordPress det er snakk om? Bruker du en plugin til dette skjemaet? Kan i så fall være i plugin det ligger....

Bruker ikke Wordpress, dette er noe egenkodet greier


men generelt er det snakk om å "fortelle php at vi bruker en utf-8 database"

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

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?
 

Jan W.

Medlem
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:

kongen

kongemedlem
Hvor har du prøvd med SET NAMES i scriptet ditt?

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')";

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" />

Ja, på siden webskjemaet ligger er det meta utf. Det er ikke noe meta-ting i php-filen som skal sende til database.
 
Topp