Encoding problemen (what else)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Senior .NET Developer Datawarehouse

Bouw jij graag mee aan de nieuwe generatie van het datawarehouse-framework voor de zorg? En kent programmeren in C# geen geheimen voor jou? Dan pas jij perfect in ons team in Amsterdam. We bieden jou de kans om complexe uitdagingen op te lossen en te werken met de nieuwste technieken. Jouw baan Zorgprofessionals nemen belangrijke beslissingen op basis van data uit ons Datawarehouse. Als .NET Developer Datawarehouse ontwikkel jij een nieuwe generatie van het achterliggende framework. Je werkt dagelijks met zeer grote en complexe datasets en krijgt te maken met uitdagende issues, waarbij diepgaand onderzoek nodig is. Je faciliteert de

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Ervaren .NET developer gezocht, api development, .

Ben je een ervaren .NET developer en op zoek naar baan waarbij je je ook meer kunt gaan richten op architectuur? Binnen een leuke, sociale en betrokken werkomgeving? Met technieken als .NET Core en Azure? Dan zou deze baan wellicht iets voor jou kunnen zijn. Voor een organisatie in Rotterdam zijn we op zoek naar eens ervaren .NET ontwikkelaar. De organisatie bevindt zich in de financiële branche en is een van de grotere spelers in hun vakgebied. De organisatie bestaat uit circa 600 medewerkers en heeft verschillende vestigingen in Nederland. Het hoofdkantoor zit in Rotterdam en daar is ook de

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

QRM Developer / DevOps Engineer / SQL / Python / F

Bedrijfsomschrijving You will work in Amsterdam for a big financial company. This organization is an international financial service provider and is operating on the basis of cooperative principles. The culture of the company is characterized by entrepreneurship, personal growth and ambition. It is an international environment with diversity and contacts around the world. Your work is to to enable the digital transformation in the Asset-Liability Management (ALM) domain. You will be implementing new models for Interest Rate Risk, Funds Transfer Pricing (FTP) or Liquidity and solutions that will enable the automation of business processes & workflows right across the business.

Bekijk vacature »

Interne functie als Java ontwikkelaar bij fijne or

Functieomschrijving Je komt in een team van ontwikkelaars en samen ga je het bestaande product verfijnen en verbeteren. Er komt ook veel nieuwbouw bij kijken en steeds gericht op de applicaties die ze in de markt hebben staan. In je rol zal je van A tot en met Z betrokken worden bij het gehele ontwikkel proces. Ze zijn hier op zoek naar een ontwikkelaar die met een brede stack kan werken, bij voorkeur kan jij écht fullstack uit de voeten. Je zal verantwoordelijk zijn voor het uitwerken, implementeren, testen en uitrollen van de software. Er wordt hier volgens de Scrum

Bekijk vacature »

Team Lead Software Python & Data Developer

NO RELOCATION - these applications will not be taken! The Team Lead Software & Data Engineering will be part of the Technology department that supports development and innovation. Client Details NO RELOCATION - these applications will not be taken! Key-Account van Michael Page A-Brand in the Netherlands Very familiar and well known among customers Description NO RELOCATION - these applications will not be taken! The Software & Data Engineering Team is responsible for continuously safeguarding the central data warehouse. You work closely with the Data Analysts & Data Scientists of the various departments and support them by adding data sources.

Bekijk vacature »

.NET developer / C# / Azure / Zorg

Functieomschrijving Ben jij een .NET Developer met minimaal 2-3 jaar ervaring en ben je toe aan de volgende stap in je carrière? Wil jij werken op het hoogste niveau en aan de slag gaan bij de .NET ontwikkel organisatie van Brabant? Dan is deze functie perfect voor jou! Als .NET Ontwikkelaar ga je: Programmeren van high-availability en high-security applicaties in C#; Samen met je teamgenoten nieuwe applicaties/diensten ontwikkelen in .NET; Overleggen met de informatie analisten en testers; Ontwikkelen van webservices (WCF); 20% van je tijd besteden aan innovatie; Deelnemen aan projecten om nieuwe ketenpartijen toe te voegen; Bouwen van unit

Bekijk vacature »

Senior C++ Developer 3D Thuiswerken

Bedrijfsomschrijving Je komt te werken bij een high-tech ingenieursbureau in regio Rotterdam. Al ruim 15 jaar werken ze aan de eigen ontwikkeling van innovatieve applicaties op het gebied van mobiliteit en infrastructuur, met onder andere C++ en Qt. Met al hun jaren ervaring bedenken en ontwikkelen ze geografische oplossingen voor grote en bekende organisaties in Nederland. Momenteel maken duizenden gebruikers gebruik van hun applicaties en proberen ze constant vernieuwend te zijn in hun aanbod naar klanten. Samen met je team ben je verantwoordelijk voor de ontwikkeling van een innovatieve applicatie met C++ voor ruimtelijke ordening die onder andere door de

Bekijk vacature »

.NET Ontwikkelaar / ASP.NET MVC / Azure / C#

Bedrijfsomschrijving Deze organisatie is gevestigd in het hart van Brabant en wordt gezien als de één van de beste .NET development organisaties in de provincie. Dagelijks werk je hier met ruim 40 enthousiaste .NET Ontwikkelaars, verdeeld over 9 Scrum teams, aan zeer complexe backend systemen. De backend systemen staan in het teken van high-intensity en high-availabilitiy en zijn opgebouwd met onder andere: - C#; - ASP.NET MVC / ASP.NET Core; - Microservices Architectuur; - Azure; - WCF. De teams bestaan uit 3-5 ontwikkelaars, 1 of 2 vaste (technisch)testers, 1 informatie analist en een Product Owner. Je zal niet alleen schakelen

Bekijk vacature »

Java Developer

Full Stack Java Developer - JAVA / Spring / NoSQL BRAND NEW ROLE AVAILABLE IN AMSTERDAM, NETHERLANDS, WORKING WITH AN ESTABLISHED SOFTWARE HOUSE • Mid to senior level candidates considered • Amsterdam location, easily accessible by car and public transport • JAVA / Spring / NoSQL • Competitive salary up to €70,000 plus amazing benefits • To apply please call +31 (0)208 004 990 or email me; George.widdowson@searchability.com Based in Amsterdam we are an industry leading software company who are looking for a Dutch speaking Java Developer with financial experience to join the team. We work with prestigious clients within

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Mobile Developer / Blockchain / 4K - 5K / Utrecht

Functieomschrijving In de functie van Mobile Developer zal je in een team gaan samenwerken waar je met de laatste moderne technieken aan de slag kan gaan. Denk aan Blockchain, Artificial intelligence, Deep Learning, Natural Language processing en Vision Recognition. Dat doe je in eerste instantie met React Native. Je werkt dus in een gave omgeving met moderne technieken in een leuk team van enthousiaste mensen. Dit bedrijf heeft de toekomst als het gaat om de combinatie tussen technieken en toekomst. Development en Data komt hier samen en dat maakt deze functie nog interessanter! Je zal dus in het begin veel

Bekijk vacature »

Senior DevOps-ontwikkelaar eIDAS

Functie­omschrijving Burgers en bedrijven veilig en betrouwbaar digitaal toegang geven tot diensten en producten van het ministerie van Economische Zaken en Klimaat. Als senior DevOps-ontwikkelaar bouw je daar letterlijk aan mee. En dat doe je bij DICTU: een van de grootste en meest vooruitstrevende ICT-dienstverleners van de Rijksoverheid. Jij werkt mee aan de doorontwikkeling van eIDAS, dat staat voor Electronic IDentification Authentication and trust Services. Deze koppeling maakt de grensoverschrijdende authenticatie op overheidswebsites binnen de Europese Unie mogelijk. Het ministerie van Economische Zaken en Klimaat heeft één moderne toegangspoort voor zijn diensten en inspecties. Enkele daarvan zijn dankzij eIDAS inmiddels

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

28/10/2020 06:38:18
 
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
 
Ad Fundum

Ad Fundum

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.