FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Har WN som tidsfördriv
|
Suttit och blivit galen över problem med åäö. Provat med båda latin-1 samt utf-8 på databas men problemet är när man hämtar datan och ska pilla in i DOMDocuemnt. Den gillar inte alls åäö utan klagar.
Det fungerar dock om man kör utf8_enocde på datan innan man stoppar in den i DomDocumentet. Varför fungerar detta och inte när man har utf-8 överallt annars? Känns väldigt obra sitta anropa utf8_enode överallt där man har text. Följande testkod körs: Kod:
<?php $mysql_server = 'localhost'; $mysql_user = ''; $mysql_password = ''; $mysql_database = ''; $conn = @mysql_connect($mysql_server, $mysql_user, $mysql_password); @mysql_select_db($mysql_database, $conn); if(isset($_GET['data'])) { $sql = 'INSERT INTO test(test) VALUES (\''.$_GET['data'].'\');'; $result = mysql_query($sql); } $sql = 'SELECT * FROM test;'; $result = mysql_query($sql); $dom = new DOMDocument('1.0', 'iso-8859-1'); $node = $dom->createElement('test'); $dom->appendChild($node); while($row = mysql_fetch_array($result)) { $tmp = $dom->createElement('tmp', $row['test']); $node->appendChild($tmp); } header('Content-type: text/xml'); echo $dom->saveXML(); ?> |
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Nykomling
|
DOMdocuments textmetoder förväntar sig 'utf-8' som inparameter. Alltså måste du alltid se till att det du skickar in är i 'utf-8'.
Det låter inte som du lyckats få till Citat:
Prova att ändra mysql teckenuppsättning med nedanstående innan du skickar din SELECT, då borde du få 'utf-8' tillbaka. mysql_query('SET character_set_results=utf8;'); mysql_query('SET character_set_client=utf8;'); mysql_query('SET character_set_connection=utf8;'); Ett annat tips; Använd "mysql_real_escape_string($_GET['data'])", så slipper du problem om GET-variabeln innehåller t.ex. "Anders 'Bullen' Olsson" |
|||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Har WN som tidsfördriv
|
Fungerade perfekt!
Vilka filer ska man ändra så man får det fungera så man slipper köra dessa tre SQL-satser för varje mysql-anslutning?. Har sparat dessa inställningar i /etc/mysql/my.cnf men det funkar dock inte. Några idéer? Sql injections känner jag till, det var bara en test och orkade inte skriva de extra tecknena. |
||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Nykomling
|
Jag vet inte säkert och har ingen burk att proba på där jag sitter just nu, men testa
[mysql] default-character-set=utf8 kan gå... |
|||
![]() |
![]() |
Svara |
|
|