WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Krångel med ÅÄÖ (https://www.wn.se/forum/showthread.php?t=1063621)

Tsarraz 2014-12-09 17:10

Hur ansluter du till databasen?
PDO mysqli eller vanlig mysql

Clarence 2014-12-09 18:15

Citat:

Ursprungligen postat av ewestergard (Inlägg 20503260)
Jag har sparat både databasen och tabellerna i utf8_unicode_ci

Är datan korrekt i databasen? Dvs om du ansluter till databasen direkt med utf8 encoding, får du ut läsbar data?

ewestergard 2014-12-09 20:12

Citat:

Ursprungligen postat av Clarence (Inlägg 20503271)
Är datan korrekt i databasen? Dvs om du ansluter till databasen direkt med utf8 encoding, får du ut läsbar data?

Jag är riktig nybörjare tyvärr, menar du:

$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.

SimonP 2014-12-09 22:46

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;
}


Kimppa 2014-12-10 13:35

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).

ANttila 2014-12-10 15:26

Citat:

Ursprungligen postat av ewestergard (Inlägg 20503260)
Jag har sparat både databasen och tabellerna i utf8_unicode_ci

Se till så att du lägger in data som är i rätt encoding, använd mb_detect_encoding eller annat för att testa och se vad du skickar in.

tartareandesire 2014-12-10 16:01

Citat:

Ursprungligen postat av Kimppa (Inlägg 20503303)
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).

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.

ewestergard 2014-12-10 20:28

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

corneliisandberg 2014-12-11 08:52

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!


Alla tider är GMT +2. Klockan är nu 12:25.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson