FAQ |
Kalender |
![]() |
#11 | ||
|
|||
Medlem
|
Hur ansluter du till databasen?
PDO mysqli eller vanlig mysql |
||
![]() |
![]() |
![]() |
#12 | ||
|
|||
Administratör
|
Är datan korrekt i databasen? Dvs om du ansluter till databasen direkt med utf8 encoding, får du ut läsbar data?
__________________
eldefors.com - Personlig (teknik)-blogg |
||
![]() |
![]() |
![]() |
#13 | ||
|
|||
Medlem
|
Citat:
$conn = mysql_connect($host, $user, $password); mysql_select_db($db,$conn); mysql_set_charset('utf-8',$conn); För det har jag provat och det funkar inte tyvärr inte, får samma problem. |
||
![]() |
![]() |
![]() |
#14 | |||
|
||||
Mycket flitig postare
|
I vissa fall går det inte att lita på att datat är UTF-8 även fast det borde vara det.
Jag fick lov att göra egen lösning när jag hade ett liknande problem, men i mitt fall handlade det om data som kom utifrån. Kod:
if (!is_utf8($strang)) $strang=utf8_encode($strang); function is_utf8($str) { $c=0; $b=0; $bits=0; $len=strlen($str); for($i=0; $i<$len; $i++) { $c=ord($str[$i]); if($c > 128) { if(($c >= 254)) return false; elseif($c >= 252) $bits=6; elseif($c >= 248) $bits=5; elseif($c >= 240) $bits=4; elseif($c >= 224) $bits=3; elseif($c >= 192) $bits=2; else return false; if(($i+$bits) > $len) return false; while($bits > 1) { $i++; $b=ord($str[$i]); if($b < 128 || $b > 191) return false; $bits--; } } } return true; } |
|||
![]() |
![]() |
![]() |
#15 | |||
|
||||
Mycket flitig postare
|
Testa byta tabellen från "utf" till "latin1_swedish"-nånting.
Det brukar lösa problemet för mig (fungerar för de flesta specialtecken - även icke-svenska). |
|||
![]() |
![]() |
![]() |
#16 | ||
|
|||
Medlem
|
|||
![]() |
![]() |
![]() |
#17 | ||
|
|||
Supermoderator
|
Det kan visserligen lösa problem med åäö om man gjort fel från början men annars bör man istället bestämma sig för om man vill använda utf eller latin. Utf* är mer eller mindre standard idag, det är inte latin*. En hel del specialtecken kan du - precis som du säger - hantera ändå men långt ifrån alla språk.
__________________
Full-stack developer, free for smaller assignments |
||
![]() |
![]() |
![]() |
#18 | ||
|
|||
Medlem
|
Ja ni... först och främst tack så mycket för all hjälp!
Har provat alla tips och råd i tråden och löser verkligen inte problemet. Såg att en tabell var sparad i "latin1_swedish-ci" ingen av dem som genererar någon text, kan det påverka? Sparade om den i utf8_unicode_ci men det hjälpte inte. Verkar som att det enda är att skapa en ny databas och göra om allt? Är en hel del tabeller och kolumner så undviker gärna det men ser ingen annan lösning på problemet. Måste väl vara databasen det är fel på? |
||
![]() |
![]() |
![]() |
#19 | ||
|
|||
Nykomling
|
Hej Ewestergard!
Det problem du beskriver är ett väldigt vanligt problem och kan ta allt från minuter till veckor att lösa om man kommer från Latin-hållet och vill över till Utf. Ibland har man inte utf-8 på en fil av rent misstag också. För att få Utf-8 att fungera måste Samtliga filer även de som du inkluderar typ db.php eller kanske settings.php också vara av utf-8. Om du sitter på en Windows funkar gamla Notepad förvånansvärt bra för att checka vilket format du använder. 1. Öppna de filer som används av webbsidan (alla includes också) 2. Spara som...längst ner kan du välja format. Där ser du enkelt om du inte har utf8 på filen och spara bara om filen. 3. Gör detta med alla filer Lycka till! |
||
![]() |
![]() |
Svara |
|
|