Avatar billede DonDaase Novice
13. oktober 2015 - 23:14 Der er 6 kommentarer og
1 løsning

ÆØÅ ved CSV import til PHP

Hej.

Når jeg laver en import af CSV til PHP kan den ikke vise ÆØÅ rigtigt når jeg viser det på skærmen.

CSV er gemt fra Excel 2010 som UTF-8.

Min kode er:
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
        <title>Jans test</title>
        <link rel="stylesheet" href="CSS/style.css">
    </head>
    <body>
               
       
        <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
            <table>
                <tr>
                    <td align="left">Åben CSV:</td>
                    <td align="left" width="145px"><input type="submit" name="knap"    value="Vis Poster"></td>
                </tr>
            </table>   
        </form>
        <?php

        if (isset($_POST['knap'])) {
                $row = 1;
                $handle = fopen("Bankdata.csv", "r");
                while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
                    $num = count($data);
                    echo "<p> $num fields in line $row: <br /></p>\n";
                    $row++;
                    for ($c=0; $c < $num; $c++) {
                        echo $data[$c] . "<br />\n";
                    }
                }
                fclose($handle);               
        }
        ?>
    </body>
</html>


Så kommer posterne bla. ud som nedenstående
8 fields in line 1:

05-03-2015
Dankort-nota Haahr Benzin, R 9994
05-03-2015
-381,74
3487,39
Fiesta
100001
Br&#65533;ndstof


Hvad kan jeg gøre? Synes jeg har prøvet alt?
Avatar billede phpnoob Novice
13. oktober 2015 - 23:59 #1
har du prøvet med 'windows-1252', 'utf-8'eller "ISO-8859-1", "UTF-8" i din kode og har du prøvet undgå at bruge fopen og fget.
Avatar billede mjansen Seniormester
14. oktober 2015 - 09:02 #2
Jeg har haft held med at bruge:
<?php header("Content-Type: text/html; charset=xxx"); ?>

Hvordan er din php.ini sat op, og din webserver?
Avatar billede DonDaase Novice
14. oktober 2015 - 20:31 #3
Tak for hjælpen knægte. Indtil videre uden held. Jeg har forsøgt med jeres forslag.

@phpnoob - Hvor i koden tænker du jeg skal sætte det ind? Jeg er desværre lidt nybegynder i PHP.
Kender du nogen alternativer til fopen og fget?

@mjansen - Jeg har forsøgt at indsætte den. Er der noget bestemt sted du tænker det skal stå? Og betyder "xxx" noget bestemt eller skal det erstattes at ex. "UTF-8"?
Jeg bruger en Synology Webserver. Og jeg ved ikke hvor php.ini ligger da jeg ikke kan komme ned i root.
Avatar billede acore Ekspert
15. oktober 2015 - 14:52 #4
&#65533 svarer til 0xfffd, og bruges som erstatning for et tegn, der ikke finde i unicode.

Mit gæt er, at csv filen ikke er skrevet med unicode encoding. Min erfaring er, at det kan være snørklet, men kan løses uden at skulle ændre sidens encoding fra utf-8. Min erfaring er også, at det ikke er fopen/fget, der er problemet.

Kan du se i filen hvilket tegn, der står for "æ"? I modsat fald er det gætteri.
Avatar billede acore Ekspert
15. oktober 2015 - 15:36 #5
Eller endnu bedre - du skal kende csv-filens encoding.
Avatar billede DonDaase Novice
15. oktober 2015 - 21:06 #6
Jaaaa sgu da...!!

Jeg havde gemt CSV filen fra Excel som UTF-8. Men da jeg åbnede den i Notepad++ og checkede kodningen var der bid. Den stod som ANSI. Da jeg rettede den til UTF-8 virkede det.

@acore - Tak! Vil du lægge et svar?

Tak for forsøget til i to andre :-)
Avatar billede acore Ekspert
15. oktober 2015 - 23:31 #7
Kommer her
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

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