Diakritische tekens worden opeens vraagtekens

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Informeel bureau zoekt Senior PHP developer

Functie Als senior PHP developer neem je het voortouw in ontwikkeltrajecten en ben je in staat werk uit te leggen aan collega’s om zo je kennis met hen te delen. Je deinst niet terug voor ingewikkelde projecten. Deze zie jij alleen maar als uit uitdaging. Je werkt doorlopend aan klantcases (en hierdoor je klant echt leert kennen), maar toch ben je afwisselend bezig. Dit alles in een vrije en ontspannen werksfeer, met een team van gelijkgestemde. Binnen de development teams werken ze met o.a. PHP, Laravel, React, Node, Elastic, Amazon AWS, JIRA, Solid, Domain-driven-design, Doctrine, Redis, docker, Kubernetes, CI, PHP

Bekijk vacature »

Java Developer / Sociaal domein

Dit ga je doen Nieuwbouw en doorontwikkeling; Beheer en wanneer nodig onderhoud; Bijdrage leveren in het functioneel- en technisch ontwerptraject; Analyseren van productie verstoringen; Meedenken over vernieuwingen en verbeteringen. Hier ga je werken De organisatie waar jij komt te werken focust zich op software development met een maatschappelijk tintje. De afdeling software ontwikkeling bestaat uit vijf verschillende scrum teams, met allen hun eigen focus gebied. Zo zijn er een aantal teams die zich focussen op specifieke applicaties, maar is er ook een team gericht op projecten. Binnen de organisatie staat innovatie en kwaliteit voorop. Een aantal applicaties draait nog op

Bekijk vacature »

.NET developer

Klaar voor een nieuwe uitdaging? Welke technologieën gaan schuil achter de dagelijkse energievoorziening? Als senior .NET developer bij Kenter maak jij samen met je team het verschil, zowel voor de interne organisatie als voor eindklanten. Samen bouwen jullie aan innovatieve dienstverlening met behulp van de nieuwste technologieën en tools. Het is een functie met veel vrijheid, goede arbeidsvoorwaarden én je draagt jouw steentje bij aan de energietransitie. Klinkt dit als iets voor jou? Lees dan verder of solliciteer direct! Wat ga je doen als senior .NET developer? Als senior .NET developer bij Kenter (onderdeel van Alliander) ben je van onschatbare

Bekijk vacature »

.NET software developer

Functie omschrijving Voor een gewilde werkgever in omgeving Roosendaal zijn wij op zoek naar een back-end software developer met een aantal jaar werkervaring. Je krijgt een plekje in het workflow team en je zal betrokken worden bij het bouwen van nieuwe software, en het optimaliseren van bestaande code. Je werkt bij dit bedrijf in een Scrum team waarin je soms klantcontact hebt. Jouw werkzaamheden zullen er als volgt uit zien: Je krijgt een plekje op de in-house IT afdeling. Deze afdeling bestaat uit zo'n 12 collega's, verdeeld over verschillende specialisaties (BI, Beheer, Business software & workflow). De vacature staat open

Bekijk vacature »

Scrum Master

TenneT is hard groeiend om de onze ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Scrum master op onze locatie Arnhem die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je begeleidt twee teams binnen de afdeling Platform Services (PLS). Je helpt mee de devops manier van werken van de teams verder door te ontwikkelen. Je helpt de PO bij het managen van de product backlog; het voorbereiden van

Bekijk vacature »

Senior front-end developer (React)

Functie Momenteel zijn ze op zoek naar een ervaren front-end developer. Als senior werk je nauw samen met 5 collega developers. Een klein scrum team dus, met korte lijnen waardoor jouw ideeën snel tot uitvoering gebracht kunnen worden. De huidige applicaties worden veelal ontwikkeld met o.a. React, Redux, TypeScript. Ze zijn echt op zoek naar een kartrekker in het team. Naast het meedenken over, opzetten en uitvoeren van bijvoorbeeld de architectuur of toepassing van nieuwe technieken krijg je ook veel tijd om de meer junior (front-end) developers te begeleiden. Hierin nemen ze graag de tijd om mensen de ruimte te

Bekijk vacature »

Senior Software developer PHP

Functie Jij als senior PHP ontwikkelaar komt te werken in 1 van onze SCRUM teams. Momenteel werken er zo’n 30 developers binnen onze organisatie Jij gaat de brug zijn tussen het bouwen van verschillende functionaliteiten binnen onze applicaties en deze vervolgens te integreren in onze centrale hub. Je start je dag om 9 uur met een stand up en dan pak je je taken op voor de dag. Een greep van jouw taken zijn: – Het bedenken en uitbouwen van features binnen de verschillende applicaties – Onderhouden van CI/CD pipelines – Bezighouden met Security & Privacy Eisen • Minimaal 4

Bekijk vacature »

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun

Bekijk vacature »

Junior Fullstack Developer

Functie omschrijving Heb jij je universitair diploma Informatica afgerond en ben jij op zoek naar een startersfunctie waar jouw ontwikkeling in een hoog vaandel staat? Voor een softwarebedrijf in Amsterdam zijn wij op zoek naar een Junior Fullstack Developer. Je begint met een op maat gemaakte training om de kennis bij te spijkeren die jij nog mist. Uiteraard leer je het meeste tijdens je werk, maar de training geeft je hiervoor alvast de juiste handvatten. Je kunt het volgende verwachten! Jij ontwikkelt in technieken als Java, Javascript en SQL. Je werkt hierbij volgens de Agile/Scrum methode; Na het afronden van

Bekijk vacature »

Senior Applicatie ontwikkelaar Java

Bedrijfsomschrijving De IV- organisatie van de Belastingdienst is verantwoordelijk voor en verzorgt de ICT- voorzieningen. Het merendeel van de applicaties wordt op dit moment door de IV- organisatie zelf ontwikkeld, onderhouden en beheerd in het eigen data center. Naast de zorg voor continuïteit op de massale heffing- en inningsprocessen die plaatsvinden binnen een degelijke, stabiele omgeving, wordt er tevens volop gewerkt aan modernisering van het IV- landschap. Dit gebeurt deels intern door gebruik te maken van de expertise die intern aanwezig is, maar ook door het aantrekken van (kant-en-klaar) oplossingen en expertise uit de markt. Functieomschrijving We verwachten van je,

Bekijk vacature »

Junior/medior PHP developer Onderwijssector

Functie Momenteel zijn ze op zoek naar een developer die, veelal fullstack, mee gaat werken aan de ontwikkeling van de producten en zo helpt aan de uitvoering van hun ontwikkelprojecten. Je komt te werken binnen hun development team bestaande uit 6 ontwikkelaars. Ze staan zowel open voor meer junior als medior/senior developers. Je kunt snel veel verantwoordelijkheid krijgen en doorgroeien binnen het bedrijf. Bovendien ben je betrokken bij het bepalen van de product roadmap en de inbreng van (nieuwe) technologieën. De applicaties waaraan je werk worden gebruikt op onderwijsinstellingen door heel Nederland. De tech-stack bestaat voornamelijk uit Laravel (PHP), Vue.js

Bekijk vacature »

Senior PHP Developer

As a Senior PHP Developer at Coolblue, you ensure that our webshops work as optimal as possible and you choach other colleagues on the hard and soft skills. How do I become a Senior PHP Developer at Coolblue? As a PHP Developer you work together with other development teams to make our webshop work as optimal as possible and to make our customers happy. Although you are a PHP Developer, you are not averse to a little TypeScript or other technologies that might be used. Would you also like to become a PHP Developer at Coolblue? Read below if the

Bekijk vacature »

C++ Ontwikkelaar

Functieomschrijving Ben jij als software ontwikkelaar toe aan een nieuwe uitdaging? Dan zoeken wij jou! Voor het maken van de procesbesturingssoftware gebruiken onze projectteams een in C++ en C# geschreven tool. Dit is een gedistribueerd object framework wat alle kernfuncties biedt voor een procesautomatisering. Verder zullen jouw werkzaamheden o.a. bestaan uit: Ontwerpen, programmeren en testen van product aanpassingen; Analyseren van vragen en wensen van gebruikers en deze vertalen naar een functioneel ontwerp; Inzichtelijk maken van voortgang omtrent softwarewerkzaamheden, o.a. door middel van SCRUM; Continu toetsen van het effect van nieuwe releases op andere tools en processen; Implementeren van nieuwe product

Bekijk vacature »

Embedded Software Developer Games

Functie omschrijving Heb jij affiniteit met hardware en wil jij kleuren binnen een Qt framework? Spreek jij de talen C en of C ++? Dan ben ik wellicht opzoek naar jou! Voor een super gave opdrachtgever in omgeving Delft is er namelijk plek voor een nieuwe kracht! Dit bedrijf is gespecialiseerd in het ontwerpen van software voor een unieke game industrie. Wil jij betrokken worden bij een proces dat loopt van ontwikkeling tot installatie? Waarbij je bezig zult zijn met perfecte systemen die geleverd worden aan binnen en buitenland? Je zult in een team, samen met vier ontwikkelaars, de mooiste

Bekijk vacature »

Full Stack Developer

Ben jij een kei van een full-stack developer? Heb je ambitie om te groeien en jezelf te ontwikkelen binnen een ambitieus bedrijf? Gaat jouw hart sneller kloppen van transpilers of frameworks zoals Angular, Vue of React? Dan ben jij de persoon die wij zoeken! Voor onze opdrachtgever zijn wij op zoek naar een full-stack developer om onderdeel te zijn van een team dat bestaat uit gedreven developers. Ieders met hun eigen specialiteiten en kennis van de projecten en behoeften vanuit de product owners. We zoeken iemand die met zijn/haar huidige competenties en domeinen dit team wil begeleiden, stimuleren en tevens

Bekijk vacature »
MV Tol

MV Tol

27/03/2024 19:32:18
Quote Anchor link
Ik weet dat hierover al eerder vragen gesteld zijn, maar toch wil ik mijn specifieke situatie even voorleggen.

Ik heb een website met grote database.
- Apache
- Clientversie van database: libmysql - 5.5.68-MariaDB
- PHP-uitbreiding: mysqli Documentatie
- PHP-versie: 5.4.16
Deze draait prima, maar binnenkort moet de website verhuizen naar een nieuwere server.

Ik heb een exacte kopie van de database op de nieuwe server gezet. Daar zijn de eigenschappen:
- Apache
- Cliëntversie van database: libmysql - mysqlnd 8.0.30
- PHP-uitbreiding: mysqli Documentatie curl Documentatie mbstring Documentatie
- PHP-versie: 8.0.30

Iets wat op de oude server prima werkt, gaat op de nieuwe fout.
In sommige tabellen komen letters met accenten voor, zoals in het woord "één". Deze speciale tekens staan in de database ook werkelijk als é opgeslagen (en niet met de html-code é).

Op de huidige (oude) website worden de speciale tekens keurig afgebeeld.
Op de nieuwe website veranderen deze tekens in een zwart vierkantje met een wit vraagteken erin.

DATABASE (oud en nieuw):
- Collatie van de serververbinding: utf8mb4_unicode_ci
- Collatie van de database: latin1_swedish_ci
- alle tekstvelden in een tabel: Collatie latin1_swedish_ci

In de html-header van de website (oud en nieuw):
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

Een veel gehoorde tip (ook op dit forum) is: je moet alles instellen op UTF-8 en dan komt dit probleem niet voor.
Maar voordat ik me in dat soort veranderingen stort, zou ik willen weten waarom ik op de oude website met dezelfde instellingen de juiste tekens zie en op de nieuwe website niet.

Is er ergens een instelling voor de nieuwe server/database, die ervoor kan zorgen dat de é uit de database ook weer een é op de website wordt? Dat zou mij enorm helpen.
 
PHP hulp

PHP hulp

19/05/2025 06:24:45
 
- Ariën  -
Beheerder

- Ariën -

27/03/2024 19:36:44
Quote Anchor link
Gaat het om content uit een database? Of om hardcoded content met een é in een echo bijvoorbeeld?
 
MV Tol

MV Tol

27/03/2024 20:02:00
Quote Anchor link
Het is content in de database.
Tekst die in de database is opgeslagen en die op de website moet verschijnen.
 
- Ariën  -
Beheerder

- Ariën -

27/03/2024 20:39:06
Quote Anchor link
Gebruik je ook een characterset bij de connectie met je database?
 
Adoptive Solution

Adoptive Solution

27/03/2024 21:54:09
Quote Anchor link
Ik gebruik utf8mb4_general_ci voor database en tabellen.

En dit in de webpagina :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />


Je kan er de hele unicode tekenreeks in kwijt.

https://en.wikipedia.org/wiki/List_of_Unicode_characters
 
- Ariën  -
Beheerder

- Ariën -

27/03/2024 22:07:36
Quote Anchor link
Waarom zou je eigenlijk nog op de oude iso-8859-1-characterset en de collatie latin1_swedish_ci willen blijven leunen? Met een goede aanpak zou je prima naar UTF-8 kunnen gaan. Maar dan moet je niet teveel rare fratsen en 'hacks' in je code hebben staan die je data uiteindelijk kunnen vernachelen.

En ja, ook daar wil ik ook komende tijd naar kijken voor PHPhulp. Wat volgens mij niet veel moeite lijkt te zijn.
Gewijzigd op 27/03/2024 22:10:33 door - Ariën -
 
MV Tol

MV Tol

27/03/2024 23:22:48
Quote Anchor link
- Ariën - op 27/03/2024 22:07:36:
Waarom zou je eigenlijk nog op de oude iso-8859-1-characterset en de collatie latin1_swedish_ci willen blijven leunen?


Er staat heel veel content in de database. Dat bouw je niet zomaar even om.
De oude php5 en oude server konden er fantastisch mee uit de voeten. Dan moet het toch een setting zijn die bij php8 en de nieuwe server hetzelfde effect geven?
 
- Ariën  -
Beheerder

- Ariën -

28/03/2024 00:10:39
Quote Anchor link
Hoezo bouw je dat niet zomaar even om?
Als ik zoek op internet naar 'iso to utf-8 converter' kom ik wel wat scripts tegen. Ik heb op mijn laptop ook een dergelijk script liggen die ik ooit met succes gebruikt heb.

Als ik tijd vind zal ik het morgen of eerdaags even in de Scripts-sectie plaatsen.
Maar in dit topic vind je vast goede tips:

https://www.phphulp.nl/php/forum/topic/overstap-van-iso88591-naar-utf8/102227/

Ga je er mee spelen: MAAK BACKUPS!
Bij sterke voorkeur in een testomgeving.

Ik zie wel verschillen in je database versie, en het gebruik van de oude PHP 5. Misschien dat daar ergens net iets anders werkt in combinatie van door jouw gebruikte functies? Maar stap gewoon meteen over naar UTF-8.
Gewijzigd op 28/03/2024 00:17:06 door - Ariën -
 

28/03/2024 07:27:49
Quote Anchor link
- Ariën - op 27/03/2024 22:07:36:
Waarom zou je eigenlijk nog op de oude iso-8859-1-characterset en de collatie latin1_swedish_ci willen blijven leunen?

Goede vraag. Voordelen:
- alle 'string'-functies werken dan, omdat die stiekem op byte-level werken
- je kunt 'gewoon' met de byte index van een array werken om karakters aan te wijzen
- het is sneller
- je hebt geen extensies nodig
- je hoeft je niet bewust te zijn van hoe Unicode en UTF-8 werkt, je kunt je niet vergissen

MV Tol op 27/03/2024 19:32:18:
Is er ergens een instelling voor de nieuwe server/database, die ervoor kan zorgen dat de é uit de database ook weer een é op de website wordt?

Nee, die is er niet.

Het traject PHP tot en met de browser bestaat uit vele instellingen.
Omdat UTF-8 de standaard is in PHP sinds versie 5.x (kennelijk was het nog niet versie 5.4) is de tutorial over Unicode slechts gedeeltelijk van toepassing.
Let wel: de standaard van HTML5 is Unicode (UTF-8) en die van JavaScript ook (UTF-16). Maar dat neemt niet weg dat browsers ook gewoon SBCS ondersteunen.

Ik kan op dit moment een weloverwogen gok doen wat er mis gaat. Wanneer de browser een blokje met een vraagteken weergeeft, dan is dat het Replacement karakter. Wanneer de browser de pagina zou renderen met de juiste encoding, zou dat karakter niet verschijnen. Ofwel, de browser denkt dat je website in Unicode staat. Dat kan komen wanneer je HTTP-header van de webserver zegt dat je pagina Unicode is.

Mocht je tegen meer problemen aanlopen, check dan je php.ini in de sectie van mbstring (die op je nieuwe server staat). Het gaat om deze instellingen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
[mbstring]
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;

Zie voor de details:
- https://www.php.net/manual/en/mbstring.http.php
- https://www.php.net/manual/en/mbstring.configuration.php
 
B a s
Beheerder

B a s

28/03/2024 18:09:27
Quote Anchor link
Heb je dit geprobeerd?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$string
= mb_convert_encoding($string, 'UTF-8', mb_detect_encoding($string));

var_dump(htmlspecialchars($string, ENT_NOQUOTES, 'UTF-8'));[/code]
 
MV Tol

MV Tol

29/03/2024 15:49:06
Quote Anchor link
De gouden tip kwam van B a s, want hij noemde mb_detect_encoding.
Dat bracht mij op deze pagina:
https://www.php.net/manual/en/function.mb-detect-encoding.php

Voor deze test heb ik in de database deze onzinnige tekst met veel accenttekens opgeslagen:
reële reçu's à la café.
Ik haal de tekst op met php:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
    $query = "SELECT `tekst` FROM `tabelnaam` WHERE `id` = 3756";
    $res = mysqli_query($db_conn, $query);
    while ($tabel = mysqli_fetch_array($res))
    {
        $tekst   = $tabel['tekst'];
    }


Als ik hierop deze test loslaat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
    var_dump(mb_detect_encoding($tekst, ['ASCII', 'UTF-8', 'ISO-8859-1'], false));
    var_dump(mb_detect_encoding($tekst, ['ASCII', 'UTF-8', 'ISO-8859-1'], true));


is het resultaat:
ISO-8859-1
ISO-8859-1
Er is dus wel ISO-chocola van te maken.
Het blijkt inderdaad mogelijk om de als UTF-8 geïnterpreteerde tekst te presenteren als ISO-8859-1.

Het volgende php-script beeldt de opgehaalde tekst op twee manieren af: de verminkte (met vraagtekens) en de gecorrigeerde versie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4

    print $tekst;
    print "<br/>";
    print mb_convert_encoding($tekst, 'UTF-8', 'ISO-8859-1');


Dit geeft als output:
re?le re?u's ? la caf?
reële reçu's à la café

Om de iso-teksten te corrigeren, is de volgende functie iso() de oplossing:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
    
function iso($data)
{
    $data = mb_convert_encoding($data, 'UTF-8', 'ISO-8859-1');
    return $data;
}    


Hiermee kan ik verder, denk ik. Ik zocht immers naar een hulpmiddel om de correct gespelde tekst uit de database ook correct op het scherm te krijgen.
Allemaal bedankt voor jullie suggesties.
 
Ivo P

Ivo P

29/03/2024 15:55:33
Quote Anchor link
Ik zou voor je steeds blind de functie iso() overal op los laat deze functie ook voorzien van die mb_detect_encoding() om te controleren of de tekst in kwestie inderdaad iso-8859-1 is.

Voor hetzelfde is dat niet op al je teksten van toepassing,
of voer je straks op je nieuwe server teksten als iets anders dan iso-8859-1 toe.
 
MV Tol

MV Tol

29/03/2024 16:04:16
Quote Anchor link
Ja, natuurlijk. Maar goed dat je het nog even noemt.
Ik bouw nog een controle in, in de functie iso(), gebaseerd op de proef met var_dump, die ik gebruikte om vast te stellen dat de tekst ISO-8859-1 was.
 



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.