Avatar billede donslund Nybegynder
12. juli 2006 - 14:15 Der er 7 kommentarer og
1 løsning

Sortere danske tegn korrekt

Hvordan får man mySQL til at sortere korrekt hvis der i teksten står Ø for Ø og så videre?
Avatar billede arne_v Ekspert
12. juli 2006 - 14:23 #1
grimt: laver en hel stribe replace i din order by

pænt: gemmer rigtige ÆØÅ i databasen og lader din web app konvertere til entiteter
Avatar billede donslund Nybegynder
13. juli 2006 - 08:31 #2
Jeg laver noget import til en tabel i databasen, og det er her det går galt. Den ændrer alle specialtegn til ?. Men jeg kan ikke bruge LOAD DATA, da csv-filen ikke indeholder lige så mange felter som tabellen.

Nogen ide om hvad der kan gå galt i denne konvertering?
Avatar billede arne_v Ekspert
13. juli 2006 - 13:11 #3
special tegn til ? plejer at betyde at filen indeholder ISO-8859-1 men
fortolkes som UTF-8
Avatar billede donslund Nybegynder
13. juli 2006 - 15:07 #4
Ja, det var også sådan noget jeg var ude i, men hvordan undgår jeg det når jeg hiver teksten fra en CSV fil?
Avatar billede donslund Nybegynder
13. juli 2006 - 15:23 #5
Jeg kan lave det om med utf8_encode i min php kode, men de store Ø'er driller.
Avatar billede donslund Nybegynder
13. juli 2006 - 15:43 #6
Den smider de store begyndelsesbogstaver væk hvis det er Æ,Ø eller Å.

Min kode:


$file = "upload/address_import.csv";

$row = 1;
$handle = fopen($file, "r");
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
    if($row > 1){
        $num = count($data);
        $indsaet = "insert into tt_address (";
        foreach($_POST as $key => $value) {
            if($key!="truncate"){
                $indsaet .= $value.", ";
            }
        }
        $indsaet = substr($indsaet, 0, -2);
        $indsaet .= ", pid) values (";
        for ($c=0; $c < $num; $c++) {
        //print $data[$c];
            $str = $data[$c];
            $indsaet .= "\"".$str."\", ";
        }
        $indsaet = substr($indsaet, 0, -2);
        $indsaet .= ", 16)";
       
        print $row." ".$indsaet."<br>\n";
   
    mysql_query($indsaet) or die(mysql_error());
    }
    $row++;
}
fclose($handle);
Avatar billede arne_v Ekspert
14. juli 2006 - 04:16 #7
pas
Avatar billede donslund Nybegynder
14. juli 2006 - 23:39 #8
setlocale løste problemet.
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
Computerworld tilbyder specialiserede kurser i database-management

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