mySQL och åäö funkar inte

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
SeniorLemuren
Inlägg: 7826
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

mySQL och åäö funkar inte

Inlägg 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?
Johanb
Inlägg: 3406
Blev medlem: 26 mars 2006, 22:26:12
Ort: Smedjebacken

Re: mySQL och åäö funkar inte

Inlägg av Johanb »

Vilka filer laddar du upp?
danielr112
Inlägg: 8052
Blev medlem: 18 januari 2009, 00:48:24
Ort: Alvesta, Småland

Re: mySQL och åäö funkar inte

Inlägg av danielr112 »

Vad exakt för kod kör du? Och här databasen i utf eller vad just nu?
SeniorLemuren
Inlägg: 7826
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: mySQL och åäö funkar inte

Inlägg 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);
?>
SeniorLemuren
Inlägg: 7826
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: mySQL och åäö funkar inte

Inlägg 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.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: mySQL och åäö funkar inte

Inlägg av blueint »

Kika på headern "Content-Type:" ..?
Användarvisningsbild
ElectricMan
Inlägg: 4874
Blev medlem: 21 februari 2007, 20:22:48
Skype: ElectricManSwe
Ort: Luleå
Kontakt:

Re: mySQL och åäö funkar inte

Inlägg 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');
?>
SeniorLemuren
Inlägg: 7826
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: mySQL och åäö funkar inte

Inlägg 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.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43189
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: mySQL och åäö funkar inte

Inlägg 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.
SeniorLemuren
Inlägg: 7826
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: mySQL och åäö funkar inte

Inlägg 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
danielr112
Inlägg: 8052
Blev medlem: 18 januari 2009, 00:48:24
Ort: Alvesta, Småland

Re: mySQL och åäö funkar inte

Inlägg av danielr112 »

den mysql_set charset har jag också halkat på och fick sätta sist :) Bra att de löste sig!
Skriv svar