Encoding problemen (what else)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Back-end Software Developer

Functie omschrijving Ben jij op zoek naar een uitdagende development functie bij een klein gespecialiseerd softwarebedrijf? Wil jij graag hybride werken (combi tussen thuis + kantoor), loop jij warm voor maatwerk software en voel jij je prettig in een informele cultuur? Zoek dan niet verder! Reageer direct! Voor een gewilde werkgever in omgeving Tilburg zoeken wij een back-end software developer met een aantal jaar werkervaring. Je gaat werken voor een klein softwarebedrijf dat gespecialiseerd is in de ontwikkeling van integratiesoftware. Jouw werkzaamheden zien er als volgt uit: In een klein team met 4 ontwikkelaars houd jij je bezig met afwisselende

Bekijk vacature »

Front end ontwikkelaar

Functie Het huidige team bestaat uit momenteel uit 5 back end developers verdeeld van senior tot junior. Omdat de gehele front end van applicaties anders gaan insteken zijn ze op zoek naar een ervaren Front end developer die hen kan helpen de juiste keuzes te maken. Je krijgt veel vrijheid om te bepalen hoe je dit wilt ontwikkelen en vrijheid in welke techniek je hiervoor wilt gebruiken. Je zult je dus bezighouden met architectuur, documentatie en natuurlijk ontwikkeling van nieuwe functionaliteiten binnen de verschillende applicaties. natuurlijk heb jij ook mogelijkheden om te sparren binnen het team, maar ze gaan uit

Bekijk vacature »

Airport Developer / System engineer

De functie Als onze nieuwe Airport Developer / System Engineer is je doel om uit nieuwbouw- en onderhoudsprojecten maximale waarde te creëren voor Schiphol Group en haar stakeholders. Vanuit je visie en expertise, maar ook (technologische) ontwikkelingen, wetgeving en beleid vertaal je klantwensen naar een gedegen programma van eisen. In de planontwikkelingsfase werk je nauw samen met Plan Ontwikkelaars om je kennis in te brengen ten behoeve van de kwaliteit van het investeringsvoorstel. Je overlegt met diverse partijen, stelt de vraag achter de vraag en verbindt zo de belangen van de luchthaven, proceseigenaar en asseteigenaar om tot een gedragen ontwikkelopgave

Bekijk vacature »

Embedded Software Developer

Functie omschrijving Ben jij een Embedded Software Developer die affiniteit heeft met de allernieuwste technieken? Voor een mooi softwarebedrijf in omgeving Gouda zijn wij op zoek naar een Embedded Software developer. Binnen deze rol houdt jij je bezig met alle werkzaamheden die nodig zijn om een functionaliteit te bouwen. Denk aan ontwerpen, architectuur, programmeren en algoritmes. Je voert test en validatie werkzaamheden uit bij de implementatie bij de klant. Ben jij enthousiast en een echte team player? Lees dan snel verder en laat wat van je horen! Bedrijfsprofiel Onze opdrachtgever bestaat uit een groot aantal creatieve en ambitieuze ontwikkelaars. Ze

Bekijk vacature »

Back-end PHP Developer

Dit ga je doen Her- en uitbouwen van het inhouse softwareplatform dmv PHP; Onderhouden van bovengenoemd platform in PHP; Sparren met het team; Meedenken over nieuwe functionaliteiten, security etc; Jouw input leveren aan het proces door op de hoogte te blijven van nieuwe ontwikkelingen etc. Hier ga je werken Onze klant, gevestigd in de omgeving van Alkmaar, levert wereldwijd oplossingen op het gebied van IT. Dag in dag uit werken zij met veel passie aan hun product waarmee ze streven naar verbeteringen binnen zorg. Voor onze klant zijn we op zoek naar een medior PHP Developer. Je komt te werken

Bekijk vacature »

Embedded Software Developer

Functie omschrijving Voor een mooi softwarebedrijf in omgeving Moordrecht zijn wij op zoek naar een Embedded Software developer. Ben jij enthousiast en een echte team player? Lees dan snel of dit iets voor jou is! Binnen deze rol houdt jij je bezig met alle werkzaamheden die nodig zijn om een functionaliteit te bouwen. Denk aan ontwerpen, architectuur, programmeren en algoritmes. Je voert test en validatie werkzaamheden uit bij de implementatie bij de klant. Ben jij een Embedded Software Developer die affiniteit heeft met de allernieuwste technieken? Laat dan snel wat van je horen! Bedrijfsprofiel Onze opdrachtgever bestaat uit een groot

Bekijk vacature »

C# Ontwikkelaar

In het kort Als C# .NET Core ontwikkelaar ga je binnen onze business unit Transport en Logistiek aan de slag complexe maatwerk software voor bedrijf kritische systemen binnen de technische automatisering. Denk bijvoorbeeld een IoT-oplossing voor de logistieke sector waarbij we van ruim 200.000 machines de telemetrie en events verwerken. We zijn actief in de distributielogistiek, havenlogistiek en productielogistiek. Naast C# en .NET Core maken we ook gebruik van Azure technologie. En als trotse Microsoft Gold Partner leren we graag van en met jou. Wil jij jezelf blijven ontwikkelen binnen de technische automatisering met .NET, dan gaan we deze uitdaging

Bekijk vacature »

Traineeship Full Stack Java developer

Dit ga je doen Start jij op 7 augustus bij de Experis Academy dan kickstart jij jouw IT-carrière! We leiden je op tot een gewilde Full Stack Java Developer met alle kennis en vaardigheden die nodig zijn om de arbeidsmarkt te betreden. Wat kun je verwachten, hoe zit een dag in het leven van een Trainee eruit? Periode 1 Als Full Stack Java Developer Trainee volg je vanuit huis een op maat gemaakte onlinetraining die in het Engels wordt gegeven. De tijd die je kwijt bent aan het volgen van de training kun je vergelijken met een fulltime werkweek. In

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: 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 je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Front-end React developer

Functie Het frontend team bestaat momenteel uit 4 dedicated front-enders en is hard aan het groeien! Ook werken er diverse designers waar je veel mee schakelt. Samen leveren jullie een essentiële bijdrage aan de applicaties die ze voor hun klanten realiseren, jij bent hierin de schakel tussen de eindgebruiker en de slimme backend. Je werkt in het frontend team samen met de backend teams en product owners om te zorgen dat onze applicaties een fijne gebruikerservaring opleveren. Ze werken o.a. met: React, Atomic design, Styled components, JavaScript / TypeScript, NPM, Webpack Blade templates, HTML, SCSS, Git flow. Eisen • HBO

Bekijk vacature »

.Net ontwikkelaar - Het schoolsysteem verbeteren!

Bedrijfsomschrijving Onze klant is een prettige en kleinschalige organisatie waar hard gewerkt wordt om het onderwijs te verbeteren. Daarom werken ze aan complexe om administratieve, financiële en facilitaire processen te versnellen en te verbeteren. Dit doen ze vanuit een platte organisatie voor klanten die door geheel Nederland verspreid zitten, hier horen vanzelfsprekend een aantal aansprekende HBO scholen en universiteiten toe. Functieomschrijving Je komt terecht in een organisatie waar op dit moment 2 scrumteams werken. Jij zal als .Net developer binnen 1 van deze scrumteams functioneren, iedereen binnen dit team heeft zijn/haar eigen expertise waardoor er met verschillende invalshoeken aan een

Bekijk vacature »

Front-end developer (Vue.js) gezocht!

Functie Als Front-end developer is het jouw doel om efficiënte en effectieve frontend code te ontwerpen, ontwikkelen en onderhouden die goed aansluit bij de functionele behoefte vanuit de klant. Je zorgt voor optimale SEO-resultaten, sitespeed en frontend security. You build it, you run it, you own it! Je maakt deel uit van een DevOps Scrum team en werkt samen met back-end developers, test-engineers, interaction designers en een projectmanager. Er zijn verschillende groepen Scrum teams. Een roadmap team is jouw ‘’thuisbasis’’, daar wordt gewerkt aan doorontwikkeling van bestaande omgevingen voor een aantal klanten. Hiernaast zijn er projectteams waar nieuwe omgevingen worden

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET Core developer wordt jij onderdeel van ons team met drie breed ontwikkelde software engineers en een flexibele schil met zes ervaren freelancers. Jij gaat mee in de visie van onze organisatie om als IoT partner in deze branche specifieke markt “het” platform te blijven innoveren en deze ook steeds slimmer te maken. Wij hopen dan ook zeker dit in de toekomst te kunnen realiseren met bijvoorbeeld Artificial Intelligence. De architectuur van ons platform is opgemaakt uit een deel eigen protocol, een interface laag en een laag welke de protocollen van derde partijen vertaald naar het eigen

Bekijk vacature »

SAP ABAP Developer

Dit ga je doen Software ontwikkeling met behulp van o.a. ABAP, Sapscript en Smartforms Maatwerk development op SAP ECC 6.0, in de toekomst S/4 HANA Samenwerken met Business Analisten die functioneel en technisch ontwerpen aanleveren Testen van opgeleverde software Bugfixing Ondersteuning van eindgebruikers Hier ga je werken Onze klant, een internationaal gevestigd productiebedrijf dat mensen blij maakt, is ter versterking op zoek naar een ABAP Developer voor hun SAP team. Het team van 4 mensen verzorgt de ontwikkeling van maatwerk voor de SAP omgeving waar wordt gewerkt met modules SD, FI/CO, PM en MM. Momenteel draait het bedrijf op SAP

Bekijk vacature »

Fullstack developer - medior

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie willen werken? Voor een mooi softwarebedrijf in omgeving Dordrecht zijn wij op zoek naar versterking voor op de afdeling Software Development! Als Fullstack developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Werkzaamheden Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met

Bekijk vacature »
Eric Verboven

Eric Verboven

08/08/2020 19:01:01
Quote Anchor link
Ik krijg txt-bestanden in mijn php-programma, met een file_get_contents. Ik weet eigenlijk alleen dàt het txt-bestanden zijn, niet uit welke omgeving ze afkomstig zijn. De bedoeling is dat ik (gedeelten van) die teksten toon in mijn programma. Ze moeten op hetzelfde scherm getoond worden.

Probleem: er duiken 'gekke tekens' op.

Voorbeeld:
- In de ene tekst wordt het woordje "één" (dus met tweemaal het Franse accent aigu) getoond zoals het hoort.
- In de andere tekst wordt de é met accent aigu getoond als een op een hoek staand zwart vierkantje met een wit vraagteken.

Op geen enkele plaats, niet in de html-header en ook niet in de php-code, wordt er gegoocheld met encoding. Wanneer ik mb_detect_encoding ($text) opvraag, krijg ik in beide gevallen utf-8.

Vraag: hoe krijg ik mijn ééntjes (en andere ä, ç, ü en à enz.) op een deftige manier op mijn scherm? Natuurlijk heeft het met encoding te maken. Alleen zie ik op dat vlak al lang de bomen niet meer door het bos. Bestaat daar een soort "standaard-oplossing" voor? Heeft iemand een code-voorbeeld?
Gewijzigd op 08/08/2020 20:35:32 door Eric Verboven
 
PHP hulp

PHP hulp

05/01/2025 07:51:07
 
Adoptive Solution

Adoptive Solution

08/08/2020 19:50:35
Quote Anchor link
Kijk een of dit onderwerp uitsluitsel biedt.

https://www.phphulp.nl/php/forum/topic/utf-en-vreemde-tekens/103664/
 
Eric Verboven

Eric Verboven

08/08/2020 20:44:58
Quote Anchor link
Bedankt, Adoptive Solution, maar de link die je opgaf, lost eigenlijk niks op. In de link die je opgeeft, gaat het om materiaal dat in een MySQL-database opgeslagen zit. Dat leidt tot een heel andere situatie dan de mijne. Ik werk met tekstbestanden die op schijf staan, en die ik met file_get_contents inlees - dus geen MySQL in de buurt, en ook geen MySQL-connectie-problemen of -mogelijkheden.

Wat het misschien een beetje tricky maakt, is dat het in mijn geval gaat om een vijftal (niet vooraf in te schatten) teksten, waaruit stukjes gehaald worden die gelijktijdig, dus op hetzelfde scherm, getoond moeten worden.

Heeft iemand een idee?
 
Thomas van den Heuvel

Thomas van den Heuvel

08/08/2020 21:05:58
Quote Anchor link
De principes blijven echter hetzelfde, en zolang je geen oplossing hebt lijkt het mij handig om alle opties open te houden en niet te voorbarig dingen te concluderen.

> Op geen enkele plaats, niet in de html-header en ook niet in de php-code, wordt er gegoocheld met encoding.

En hoe serveert jouw webserver jouw documenten dan? Heb je wel eens in de netwerk-tab naar de responses gekeken en welke headers deze hadden? Want volgens mij was het juist datgene wat voor de problemen zorgde in de andere thread. Stel bij voorkeur expliciet een Content-Type header in via PHP, onder vermelding van een character encoding (charset).

NB zie de eerste user comment bij mb_detect_coding():
Quote:
If you try to use mb_detect_encoding to detect whether a string is valid UTF-8, use the strict mode, it is pretty worthless otherwise.

Jij krijgt dus op dit momemt mogelijk zogenaamde false positives zonder die strict flag.

Gebruik dus mb_detect_encoding($text, mb_detect_order(), true), en converteer alles ongelijk aan UTF-8 naar UTF-8.

Je zou ook eens kunnen kijken wat mb_detect_order() teruggeeft.

Het zou natuurlijk nog een stuk handiger zijn wanneer je af kunt dwingen dat alles in een bepaald formaat wordt aangeleverd. Als je iemand alles in laat vullen in een formulier en dan in een database opslaat, dan kun je dit doel mogelijk makkelijker bereiken dan met losse tekstbestanden.
Gewijzigd op 08/08/2020 21:29:03 door Thomas van den Heuvel
 
Eric Verboven

Eric Verboven

08/08/2020 22:37:19
Quote Anchor link
He Thomas.

Je suggesties hebben vrucht opgeleverd, denk ik. Een tekst die problemen gaf, leverde eerst "utf-8" op, net als andere teksten, die géén problemen gaven. Dat was vervelend. Daarna heb ik jouw mb_detect_encoding($text, mb_detect_order(),true) uitgevoerd. Nu was het resultaat "niets", een lege string. Dat suggereerde in elk geval al dat er een verschil was tussen die lastige tekst en de andere.
Daarna heb ik op php.net een handige functie gevonden voor conversie naar utf-8. Je vindt die bij https://www.php.net/manual/en/function.utf8-encode.php#118318 onder de User Contributed Notes, op naam van een zekere pini. Met de functie die je daar vindt, anything_to_utf8 , lukt de conversie van mijn "lege encodering" naar utf-8 zonder het minste probleem, en o wonder: alles wordt zo op het eerste gezicht getoond zoals het moet, zonder gekke zwarte vierkantjes of andere ongein.
Heel erg bedankt voor het goede spoor, dus.
Toch één opmerking: encodering van teksten is een meganorme warboel, voor zover ik dat na een paar uurtjes gepriegel kan beoordelen. Ik kan die anything_to_utf8 functie wel toepassen, maar de code begrijpen doe ik voor geen jota. Maar never change a working piece of code, zegt de profeet. En nogmaals bedankt!

PS: je hebt natuurlijk gelijk met je opmerking over database-gebaseerde informatie en tekstbestanden, maar die keuze heb ik niet. Ik moet dingen tonen uit (ongestructureerde) teksten, gewoon "leesteksten", boeken, zeg maar. Ik zou ook wel met leuke formulieren en strakke MySQL-tabellen willen werken, maar dat is niet aan de orde.
Gewijzigd op 08/08/2020 22:50:31 door Eric Verboven
 
Thomas van den Heuvel

Thomas van den Heuvel

09/08/2020 00:11:55
Quote Anchor link
Hm, die anything_to_utf8() doet in principe niet zoveel. Het enige wat dit volgens mij effectief doet is indien iets niet als UTF-8 wordt geïdentificeerd, dat daar dan maar utf8_encode() overheen wordt gegooid. Maar dat zou je eigenlijk alleen met enig fatsoen kunnen/mogen doen indien de brontekst een ISO-8859-1 encodering had, want zo werkt utf8_encode() nu eenmaal.

Dit zou je natuurlijk altijd kunnen proberen indien mb_detect_encoding() niets opleverde en dan hopen dat daar iets leesbaars uitkomt, maar anders zou je eigenlijk de gedetecteerde encoding moeten gebruiken om dit met behulp van mb_convert_encoding() te converteren naar UTF-8. Maar utf8_encode() toepassen op data van een onbekende encodering blijft een gok.

Ik zou dus eerder zoiets gebruiken (niet getest, maar het principe zou duidelijk moeten zijn):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function gimme_utf8($in) {
    $encoding = mb_detect_encoding($in, mb_detect_order(), true);

    if ($encoding === 'UTF-8') {
        return $in; // this is fine
    } elseif ($encoding === false) {
        return utf8_encode($in); // your guess is as good as mine
    } else {
        return mb_convert_encoding($in, 'UTF-8', $encoding); // attempting to convert
    }
}

?>

Ik zie trouwens ook dat mijn mb_detect_order() lijst niet bijzonder lang is, hier zit enkel ASCII en UTF-8 in :p. Dus effectief doet dit waarschijnlijk hetzelfde als anything_to_utf8(), maar het bovenstaande snijdt wat mij betreft wat meer / wel hout :).
Gewijzigd op 09/08/2020 00:52:03 door Thomas van den Heuvel
 

10/08/2020 23:25:05
 



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.