Avatar billede PeaceDealer Nybegynder
10. februar 2014 - 01:06 Der er 13 kommentarer og
1 løsning

Læs text fil med æ,ø og å

Hej

Jeg er ved at lave et hangman spil, dog kan jeg ikke få den til at læse bogstaverne æ, ø og å.

Bruger en custom function til at loade filen:
function file_get_contents_utf8($fn) {
    $content = file_get_contents($fn);
      return mb_convert_encoding($content, 'UTF-8', mb_detect_encoding($content, 'UTF-8, ISO-8859-1', true));
}

dog kommer bogstaverne stadig ud som ?
Avatar billede arne_v Ekspert
10. februar 2014 - 04:24 #1
Er du sikker paa at problemer er i den kode??
Avatar billede jakobdo Ekspert
10. februar 2014 - 09:01 #2
Tror du ikke du mangler at angive:

<head>
<meta charset="UTF-8">
</head>

For selvom du læser teksten som utf-8, så skal du jo også fortælle browsere den skal bruge utf-8 ?
Avatar billede PeaceDealer Nybegynder
10. februar 2014 - 11:32 #3
Har sat charset til utf-8, og nu kommer ordet op sådan her:
http://prntscr.com/2r6s0d

og her er hele mit script som det er pt. hvis det kan hjælpe noget:
http://pastebin.com/yyavGu72
Avatar billede jakobdo Ekspert
10. februar 2014 - 11:47 #4
Kan du smide tekst filen online?
Vil gerne lave lidt kode og se om tingene ikke bliver "overtænkt" her...
Avatar billede PeaceDealer Nybegynder
10. februar 2014 - 11:54 #5
Som midlertidig "fix" bare for at dem jeg arbejder for kan se hvordan scriptet kører lige nu, har jeg lavet æ om til ae, ø om til oe, og å om til aa... men her er den originale ordliste:
http://pastebin.com/QTp4xrgr
Avatar billede jakobdo Ekspert
10. februar 2014 - 12:22 #6
Problemet med du paster, så fortæller det ikke hvilken type fil du har brugt.

Jeg har dog forsøgt med lidt kode her:

<?php
//991392

$utf = file('utf.txt');
$iso = file('iso.txt');
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>991392</title>
</head>
<body>
  <?php echo $utf[38]; ?>
  <br />
  <?php echo utf8_encode($iso[38]); ?>
</body>
</html>

Begge printer fint afsløre ud på min skærm...
Avatar billede PeaceDealer Nybegynder
10. februar 2014 - 13:33 #7
Forstår ikke helt hvordan jeg så får det her til at virke?
Avatar billede jakobdo Ekspert
10. februar 2014 - 13:36 #8
Prøv min kode på din tekst fil.
Avatar billede PeaceDealer Nybegynder
10. februar 2014 - 14:13 #9
Nu virker det næsten. Den går i stykker når str_split functionen splitter ordet op til dens bogstaver.
Avatar billede jakobdo Ekspert
10. februar 2014 - 14:15 #10
Så prøv at kig på denne funktion:

function str_split_unicode($str, $l = 0) {
    if ($l > 0) {
        $ret = array();
        $len = mb_strlen($str, "UTF-8");
        for ($i = 0; $i < $len; $i += $l) {
            $ret[] = mb_substr($str, $i, $l, "UTF-8");
        }
        return $ret;
    }
    return preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
}

Fundet her: http://www.php.net/manual/en/function.str-split.php#107658
Avatar billede PeaceDealer Nybegynder
10. februar 2014 - 14:17 #11
Fandt en function som understøtter det! Kan du ikke skrive et svar så jeg kan give dig dine points?

Mange tak for hjælpen!
Avatar billede PeaceDealer Nybegynder
10. februar 2014 - 14:18 #12
Nå, du var vist hurtigere på tasterne ang. den function...
Avatar billede jakobdo Ekspert
10. februar 2014 - 14:18 #13
Svar!
Avatar billede jakobdo Ekspert
10. februar 2014 - 15:53 #14
Takker for point.
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