PHP lees textfile specialchars

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Filip Lambinet

Filip Lambinet

21/07/2017 13:27:47
Quote Anchor link
Hallo,

Via onderstaande code lukt het mijn niet speciale characters zoals een e met accent
correct te lezen uit een txt file. Heeft iemand een oplossing? Alvast bedankt.

<html>

<head>
</head>

<body leftmargin="30" bgcolor="#e5dfe0">

<font face="Verdana" size="2" color="darkblue">

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php

$bestand
= fopen("sources/postcodes.txt", "r");
if ($bestand)
{

    while (($lijn = fgets($bestand)) !== false)
    {

      echo '<br>' .htmlspecialchars($lijn);
    }

    fclose($bestand);
}

else
    {
    echo ("Error opening file");
    }


fclose($myfile);
?>


</body>
</html>
 
PHP hulp

PHP hulp

27/11/2024 01:33:02
 
- Ariën  -
Beheerder

- Ariën -

21/07/2017 13:32:33
Quote Anchor link
Is het bestand in UTF-8 encoding opgeslagen?

En hoe zien die plaatsnamen er dan uit in het bestand en op je scherm?
Gewijzigd op 21/07/2017 13:34:50 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

21/07/2017 13:34:30
Quote Anchor link
Elk karakter, bijvoorbeeld de letter "A" kan verschillende representaties hebben op byte-niveau (in het geheugen is dit een reeks van nullen en enen). Deze encodering wordt ook wel character encoding genoemd.

Mijn vermoeden is dat de standaard character encoding (die je verder niet specificeert in je HTML-document middels een meta-tag noch in PHP via een header() aanroep) in je HTML-document niet aansluit bij de character encoding van het tekstbestand. Beide zouden eigenlijk vastgelegd moeten zijn en/of worden.

Daarnaast is PHP meestal "doof" voor dit soort nuances en zul je dus zelf dingen expliciet moeten regelen.
 
Filip Lambinet

Filip Lambinet

21/07/2017 13:35:04
Quote Anchor link
Ik denk het niet.
Heb dit ook ergens gelezen op forums, maar weet niet hoe dat moet.
Ik gebruik notepad++
Thx.

Toevoeging op 21/07/2017 13:37:33:

Thomas, dat van de nulletjes en eentjes ken ik (ben bachelor ICT van opleiding,
zei het 20 jaar geleden :-).

Dit probleem had ik ook met data in mysql databases, maar daar bood htmlspecialchars een oplossing...
 
Thomas van den Heuvel

Thomas van den Heuvel

21/07/2017 13:40:04
Quote Anchor link
Lees dit eens: There Ain't No Such Thing As Plain Text.

Verder zullen we moeten weten:
- hoe notepad++ bestanden opslaat (met welke character encoding)
- op welke default character encoding jouw specifieke browser is ingesteld (ingeval je niet zelf expliciet de juiste character encoding instelt via HTML of PHP of allebei)

EDIT: over MySQL: dit oplossen met htmlspecialchars() is zeer gevaarlijk en je lost daarmee het probleem niet op (en eigenlijk is dit een pleister op de verkeerde plek).
Gewijzigd op 21/07/2017 13:41:09 door Thomas van den Heuvel
 
Filip Lambinet

Filip Lambinet

21/07/2017 13:41:38
Quote Anchor link
Mijn ICT opleiding toen bestond uit DB2, SQL, COBOL, PL1, Mainframe, en dergelijke...
Er was nog geen sprake van webdesign of web programmatie.
Deze huidige programmeertalen/technieken leer ik momenteel zelf
(HTML, JAVASCRIPT, PHP, MySQL, CSS, ...)


Toevoeging op 21/07/2017 13:59:28:

Thomas, is htmlspecialchars een verkeerde manier naar mysql toe?
Zoals gezegd, ik leer het allemaal via mezelf, heb geen schoolopleiding
php genoten.

Kan je me uitleggen waarom het geen goede manier is, en hoe het dan wel moet?
Bij mij werkt de code, na vele testen, in ieder degelijk...
Dankje.

Filip



Toevoeging op 21/07/2017 14:45:44:

Opgelost.
.txt file gewoon openen met notepad++
Dan, menu, karakterset, converteren naar UTF-8, save.

Daarna niets speciaals nodig in php om special characters te lezen...

Thanks all for advise.

ps: Thomas, kan je me nog uitleggen waarom htmlspecialchars uit den boze zou zijn?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.