Avatar billede ej147 Nybegynder
25. januar 2014 - 09:58 Der er 15 kommentarer og
1 løsning

Mareridtet æø ÆØÅ igen igen

Nu er det så desværre min tur til at rende ind i problemet med de danske karakterer - eller mangel på samme.
Og jeg håber virkelig, der er en af jer, der kan hjælpe med en løsning, da jeg har bakset med det i et par dage og nu ikke aner hvad jeg skal gøre.

Fakta er følgende:
Min hjemmeside zerious.dk bruger tegnsættet utf-8 og alle tegn,der ikke har noget med databasen at gøre vises korrekt.

Så har jeg en database med 4 tabeller hvor alle 4 bruger tegnsættet utf8_general_ci - har set efter - den er god nok.

Mit script, der kalder databasen er her:
<?php
$host =  "";
$user = "";
// MySQL brugernavn
$pass = "";
// MySQL password
$dbase = "gedcom";
// MySQL Navn på database
$tablecount = "counter";
// Navn på tabel i dette tilfælde counter
// Database forbindelse skal ikke rettes<br /><br />
$db = mysql_connect ( $host , $user , $pass );
mysql_select_db ( $dbase );
?>

(Jeg har prøvet at indsætte mysql_set_charset('utf8'); men det ændrede intet.)

Og til sidst det script, der skal vise resultatet på hjemmesiden er her:
<?php
include('db.php');
?>
        <div id="opslag">
        <form>
<?php
$con=mysqli_connect("","","","gedcom");
mysql_set_charset('utf8');
// Check connection
if (mysqli_connect_error())
  {
  echo "Fejler connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT * FROM person_st ORDER BY efternavn");

echo "<table border='1'>
<tr>
<th>Efternavn</th>
<th>Fornavn</th>
<th>Født dato</th>
<th>Fødested</th>
<th>Død dato</th>
<th>Sidst kendte adresse</th>
</tr>";

while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['efternavn'] . "</td>";
  echo "<td>" . $row['fornavn']  . "</td>";
  echo "<td>" . $row['birt_date'] . "</td>";
  echo "<td>" . $row['birt_plac'] . "</td>";
  echo "<td>" . $row['deat_date'] . "</td>";
  echo "<td>" . $row['deat_plac'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

mysqli_close($con);
?>
        </form>
        </div>

I det sidste script bruges f.eks feltet Født og det tegn vises korrekt, men det kommer jo heller ikke fra selve databasen.
Men alle æøå ÆØÅ tegn, der kommer fra selve basen skifter til ???
Hvad i himlens navn kan jeg gøre for at få de danske karakterer?
Har læst stort set alt hvad der findes her på siden omkring emnet - og afprøvet de nævnte forslag - men uden held.
Håber virkelig en af jer kan hjælpe med dette.
Mvh Erik
Avatar billede bas Forsker
25. januar 2014 - 11:30 #1
Det er vel ikke en opsætning på selve databasen der skal ændres - altså hos udbyderen?
Avatar billede repox Seniormester
25. januar 2014 - 12:50 #2
Prøv lige efter du har forbundet til databasen at skrive

mysql_query("SET NAMES 'utf8'");
Avatar billede ej147 Nybegynder
25. januar 2014 - 18:29 #3
repox:
Jeg prøver - vender tilbage
Avatar billede ej147 Nybegynder
25. januar 2014 - 18:36 #4
Nej desværre - det ændrede intet - og nu er det lige før jeg begynder at blive desperat, for hvad i himlens navn har jeg gjort galt?
Avatar billede repox Seniormester
28. januar 2014 - 09:58 #5
Har du et link til siden?
Avatar billede ej147 Nybegynder
28. januar 2014 - 10:20 #6
Giv mig 10 minutter - lægger den ud - vender tilbage når den er der. Håber du kan hjælpe...
Avatar billede ej147 Nybegynder
28. januar 2014 - 10:25 #7
Problemet ligger her:
zerious.dk - Slægtsforskning - Test opslag

Du kan hurtigt se at den er gal med æøå ÆØÅ
Avatar billede repox Seniormester
28. januar 2014 - 10:31 #8
Hvor har du sat mit forslag til SET NAMES ind i din kode?
Avatar billede ej147 Nybegynder
28. januar 2014 - 10:32 #9
Det er kun en test side.
Men tanken bag side er, at den skal indeholde en søgefunktion på efternavn og fornavn på alle personer og at alt skal være indenfor i det gule felt.
Men lige nu bøvler jeg med at finde ud af hvorfor æøå er udeblevet?
Avatar billede ej147 Nybegynder
28. januar 2014 - 10:33 #10
Her hvor databasen bliver kaldt:

<?php
// konfiguration variabler

$host =  "localhost";
// Din MySQL Host, næsten altid localhost, tjek med din udbyder

$user = "";
// MySQL brugernavn

$pass = "";
// MySQL password

$dbase = "gedcom";
// MySQL Navn på den database du bruger

$tablecount = "counter";
// Navn på tabel i dette tilfælde counter

// Database forbindelse skal ikke rettes<br /><br />
$db = mysql_connect ( $host , $user , $pass );
mysql_select_db ( $dbase );
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION = 'utf8_general_ci'");
?>
Avatar billede ej147 Nybegynder
28. januar 2014 - 10:45 #11
Dette script bruger jeg til selve opslaget, det der hedder Test opslag på hjemmesiden.
her er dit forslag også sat ind:

<?php
include("db.php");
$con=mysqli_connect("localhost","","","");
#$con=mysqli_connect("","","","gedcom");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION = 'utf8_general_ci'");
// Check connection
if (mysqli_connect_error())
  {
  echo "Fejler connect to MySQL: " . mysqli_connect_error();
  }
$result = mysqli_query($con,"SELECT * FROM person_st ORDER BY efternavn");
?>
        <div id="opslag">
        <form>
<?php
echo "<table border='1'>
<tr>
<th>ID</th>
<th>Efternavn</th>
<th>Fornavn</th>
<th>Født dato</th>
<th>Fødested</th>
<th>Død dato</th>
<th>Sidst kendte adresse</th>
</tr>";

while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['persID'] . "</td>";
  echo "<td>" . $row['efternavn'] . "</td>";
  echo "<td>" . $row['fornavn']  . "</td>";
  echo "<td>" . $row['birt_date'] . "</td>";
  echo "<td>" . $row['birt_plac'] . "</td>";
  echo "<td>" . $row['deat_date'] . "</td>";
  echo "<td>" . $row['deat_plac'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

mysqli_close($con);
?>
        </form>
        </div>
Avatar billede repox Seniormester
28. januar 2014 - 11:18 #12
Prøv bare at nøjes med SET NAMES og ikke de to nedenunder.

Hvis det ikke lykkedes for dig, har det sandsynligvis været fordi du har indsat dataene som noget andet (latin1) og så bliver du nød til manuelt at omvende tegnsættet ved hjælp af utf8_encode/utf8_decode (alt afhængigt af hvilken vej det er).

while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['persID'] . "</td>";
  echo "<td>" . utf8_encode($row['efternavn']) . "</td>";
  echo "<td>" . utf8_encode($row['fornavn'])  . "</td>";
  echo "<td>" . $row['birt_date'] . "</td>";
  echo "<td>" . utf8_encode($row['birt_plac']) . "</td>";
  echo "<td>" . $row['deat_date'] . "</td>";
  echo "<td>" . utf8_encode($row['deat_plac']) . "</td>";
  echo "</tr>";
  }
echo "</table>";

Hvis utf8_encode ikke virker, så prøv med utf8_decode i stedet.
Avatar billede ej147 Nybegynder
28. januar 2014 - 11:21 #13
Jeg prøver det du sender her - vender tilbage.....
Avatar billede ej147 Nybegynder
28. januar 2014 - 11:25 #14
YES YES YES - vidunderligt - "skidtet virker" - min dag er reddet.
Tusind tak for hjælpen
Avatar billede repox Seniormester
28. januar 2014 - 11:26 #15
Selv tak :)
Avatar billede ej147 Nybegynder
28. januar 2014 - 11:31 #16
Det er MIG, der takker :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester