Sida 1 av 1

mySQL och åäö funkar inte

Postat: 12 oktober 2013, 18:45:57
av SeniorLemuren
Jag får mask! Har en mySQL-databas som innehåller text med svenska tecken. Har provat med UTF-8 och ISO 8859-1 i både databasen och på sidan.

I databasen ligger ÅÄÖ som dom skall och när jag testkör mot min lokala databas så funkar det, men när jag laddar upp filerna och kör mot databasen, som är en kopia av min lokala databas, hos min leverantör (Binero) , så blir det bara ??? i stället för ÖÄÅ

Det är min son som äger kontot på Binero och han flänger runt i Tyskland just nu, så att få hjälp hos supporten tar tid. Någon här som vet en lösning?

Re: mySQL och åäö funkar inte

Postat: 12 oktober 2013, 19:00:44
av Johanb
Vilka filer laddar du upp?

Re: mySQL och åäö funkar inte

Postat: 12 oktober 2013, 19:11:53
av danielr112
Vad exakt för kod kör du? Och här databasen i utf eller vad just nu?

Re: mySQL och åäö funkar inte

Postat: 12 oktober 2013, 19:38:01
av SeniorLemuren
Just nu UTF-8

Kod: Markera allt

<?php require_once('Connections/mydata.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

mysql_select_db($database_mydata, $mydata);
$query_kundRec = "SELECT * FROM kunddb WHERE radId = 56";
$kundRec = mysql_query($query_kundRec, $mydata) or die(mysql_error());
$row_kundRec = mysql_fetch_assoc($kundRec);
$totalRows_kundRec = mysql_num_rows($kundRec);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>svtecken.php</title>
</head>

<body>
 <?php echo $row_kundRec['fNamn']; ?><br />
 <?php echo $row_kundRec['eNamn']; ?>
</body>
</html>
<?php
mysql_free_result($kundRec);
?>

Re: mySQL och åäö funkar inte

Postat: 13 oktober 2013, 08:00:02
av SeniorLemuren
Jag var lite trött i natt så jag fick för mig att ÅÄÖ funkade när jag körde mot testdatabasen lokalt. Det gjorde den inte. Det är samma fel. Skriver jag in HTML-koden för ÖÄÅ manuellt i databasen så visas det korrekt på skärmen.

Edit: Har nu fått den att skriva de rätta tecknen för när jag skriver ut från databasen

När man skapar en sida med hjälp av Dreamweaver så skapas raden:

Kod: Markera allt

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Tar jag bort:

Kod: Markera allt

content="text/html;
Så blir det rätt oavsett om det är html-kodat eller bara öäå i databasen. Jag kan till och med ta bort hela raden och det fungerar. Men då skrivs inte rätt tecken ut i den text som skrivs direkt på sidan, så fortfarande funkar det inte som det skall.

Re: mySQL och åäö funkar inte

Postat: 13 oktober 2013, 11:58:45
av blueint
Kika på headern "Content-Type:" ..?

Re: mySQL och åäö funkar inte

Postat: 13 oktober 2013, 14:09:41
av ElectricMan
Antar att det är i Connections/mydata.php du ansluter till mysql-databasen?

Testa lägg till mysql_set_charset('utf8'); i den filen.

Exempel;

Kod: Markera allt

<?php
	$db_host = "localhost";
	$db_username = "db";
	$db_pass = "pw";
	$db_name = "user";

	mysql_pconnect($db_host, $db_username, $db_pass) or die ("Could not connect connect to MySQL Server");
	mysql_select_db($db_name) or die ("No database");
	mysql_set_charset('utf8');
?>

Re: mySQL och åäö funkar inte

Postat: 13 oktober 2013, 16:50:39
av SeniorLemuren
Ska testa det senare. För tillfället fungerar det. Jag hade skrivit in testdata direkt via mySQL-kontrollpanelen. ÖÄÅ lagrades då i databasen som ÖÄÅ. När jag lade in motsvarande HTML-kod i st.f rena tecknen så funkade det. Det visade sig att om jag uppdaterar databasen via den kod som DW producerar så läggs den in som HTML-kod. Så problemet finns egentligen bara om jag lägger in data manuellt via kontrollpanelen.

Re: mySQL och åäö funkar inte

Postat: 13 oktober 2013, 17:06:01
av sodjan
Personligen tycker jag att databasen ska innehålla original data och
sedan görs HTML kodningar i samband med presentationen. Jag har
just nu ett liknande problem fast där ligger data i 7-bit ASCII, d.v.s
att "Ä" är lagrat som "\" i databasen. Det konverteras till "&Auml;"
innan det skickas tillbaka till web-browsern. Och på samma sätt för
övriga svenska tecken (och eventuellt andra) som inte visas korrekt.

Re: mySQL och åäö funkar inte

Postat: 13 oktober 2013, 17:16:06
av SeniorLemuren
ElectricMan skrev:Antar att det är i Connections/mydata.php du ansluter till mysql-databasen?

Testa lägg till mysql_set_charset('utf8'); i den filen.

Exempel;

Kod: Markera allt

<?php
	$db_host = "localhost";
	$db_username = "db";
	$db_pass = "pw";
	$db_name = "user";

	mysql_pconnect($db_host, $db_username, $db_pass) or die ("Could not connect connect to MySQL Server");
	mysql_select_db($db_name) or die ("No database");
	mysql_set_charset('utf8');
?>
TAAAACK!!! Testade, och nu kan jag använda ÅÄÖ direk utan html. En enkel lösning om man visste om den. Har Googlat som bara den men missade detta. Jag var säker på att databasen var UTF8 eftersom det står så i tabellerna, men det hjälper tydligen inte. Nu är jag glad igen. :D

Re: mySQL och åäö funkar inte

Postat: 13 oktober 2013, 19:00:39
av danielr112
den mysql_set charset har jag också halkat på och fick sätta sist :) Bra att de löste sig!