Newline en HTML Encoding

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rico

Rico

04/04/2008 00:10:00
Quote Anchor link
Hallo allemaal,

Ik krijg een xml bestand aangeleverd die ik verwerk en in een db zet. Nu is het probleem dat de encoding niet goed te krijgen is en het vervangen van de \n niet werkt. Ik heb ookal rondgezocht op dit forum, en geen van de opties werken.

Newline vervangen:

Dit is de code die ik gebruik:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$var = str_replace("\n", "<br />", $var);


Als ik dit toepas op tekst die ik uit de db haal, gebeurt er niks mee. Wat doe ik fout? Het werkt wel als ik dezelfde tekst zo probeer:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$var = "de opgehaalde\ntekst uit de db";
$var = str_replace("\n", "<br />", $var);


Maar op de tekst die uit de db gehaald wordt, werkt niks. :S

Encoding:

De db staat op latin1_swedish_ci het html bestand bevat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">


Ook de tekst in het xml bestand is in ISO-8859-1 opgesteld.
Ondanks dit blijft hij toch de rare tekens weergeven. :S

Ik hoop dat iemand mij kan helpen met 1 of allebij de problemen.

Alvast bedankt voor jullie tijd en moeite.

Groeten,
Rico
Gewijzigd op 01/01/1970 01:00:00 door Rico
 
PHP hulp

PHP hulp

23/12/2024 04:43:39
 
Bas Matthee

Bas Matthee

04/04/2008 11:08:00
Quote Anchor link
Probeer eens:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$var
= nl2br($var);
?>
 
Rico

Rico

04/04/2008 12:14:00
Quote Anchor link
Bas Matthee schreef op 04.04.2008 11:08:
Probeer eens:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$var
= nl2br($var);
?>


Ookal geprobeert, werkt ook niet.

Zou het probleem komen doordat de gegevens uit een xml bestand naar de db is gegaan? Maar ik heb het ook getest om het goed in de db te zetten ook weer zonder effect.

Ik hoop dat iemand ziet wat ik nu fout doe, want ik snap er niks meer van waarom het niet werkt.
 
Riemer

Riemer

04/04/2008 12:24:00
Quote Anchor link
Eerst raad ik je aan om in elk document het zelfde karakterset te gebruiken, dit ivm met rare conversie fouten wat nog wel eens wil voorkomen.

Verder, kun je ons voorbeelden geven van de orginele karakters die als output helemaal iets anders zijn?
 
Rico

Rico

04/04/2008 16:30:00
Quote Anchor link
@Riemer: Elk bestand heeft dezelfde encoding ook de db heeft dezelfde encoding als de bestanden. Alles staat op ISO-8859-1. Het aangeleverde xml bestand heeft geen encoding in de 1ste regel
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?xml version="1.0"?>
helaas. Maar hier kan ik dus helaas niks aan veranderen.

De input is hetzelfde als de output. Als er in het xml bestand "dit is\neen regel met rare °C tekens" staat dan wordt deze ook zo in de db gezet, en wordt deze ook zo opgehaald uit de db. Ik heb al geprobeert om het al voordat het de db ingaat te corrigeren, maar dat lukt ook niet. Onder de rare tekens die ISO-8859-1 zou moeten opvangen vallen gr/m² , geïnstalleerd , kopieën.

Het lijkt erop dat de fout tijdens de verwerking van het xml bestand zou zijn, maar heb daar ookal alles wat ik vond geprobeert, en nergens kreeg ik het juiste resultaat.

Ik hoop dat ik het een beetje duidelijk heb kunnen maken hoe de verwerking is. Ik hoop echt dat iemand mij kan zeggen wat ik fout doe, ik snap er iig niks meer van.
 
- SanThe -

- SanThe -

04/04/2008 16:38:00
Quote Anchor link
Weet je wel zeker dat er \n in staat.
 
Mike van Dongen

Mike van Dongen

04/04/2008 16:41:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$var
= str_replace("\r\n", "<br />", $var);
?>

Werkt dit ?
 
- SanThe -

- SanThe -

04/04/2008 16:45:00
Quote Anchor link
@Miky: Als alléén \n het niet doet zal \r\n het dus zeker niet doen.
 
Riemer

Riemer

04/04/2008 16:50:00
Quote Anchor link
Een wilde gok, probeer in de HTML bestand de karakterset te zetten naar UTF-8.
 
Rico

Rico

04/04/2008 18:07:00
Quote Anchor link
SanThe schreef op 04.04.2008 16:38:
Weet je wel zeker dat er \n in staat.


Lijkt me moeilijk om me daarin te vergissen.. :D \n is newline en die staat vast tussen 2 woorden in.. Dus ja dat weet ik zeker.
 
Rico

Rico

04/04/2008 18:09:00
Quote Anchor link
@Miky: Ook al geprobeert en werkt niet.

@Riemer: Ook al geprobeert en lost niks op helaas.
 
Jesper Diovo

Jesper Diovo

04/04/2008 18:48:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$var
= str_replace("\\n", "<br />", $var);
?>


Werkt dat niet? (Je escapet hiermee de \n.)
 
Rico

Rico

04/04/2008 20:39:00
Quote Anchor link
Djemo schreef op 04.04.2008 18:48:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$var
= str_replace("\\n", "<br />", $var);
?>


Werkt dat niet? (Je escapet hiermee de \n.)


AAAAA ik wist wel dat het iets doms zou zijn wat ik niet doorhad... echt dat ene \ werkt helemaal.. :D Heel erg bedankt, dan is iig 1 probleem opgelost. :D Bedankt Djemo. En ook de rest bedankt voor het meekijken wat ik nu eigenlijk niet had gedaan. :D

Nu nog het encoding probleem wat heel vreemd is, maar denk dat het ook zoiets kleins is.
Gewijzigd op 01/01/1970 01:00:00 door Rico
 
Martijn B

Martijn B

04/04/2008 21:05:00
Quote Anchor link
Volgens mij moet je dan nog de karakterset instellen van de verbinding.

http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html
 
Rico

Rico

04/04/2008 21:29:00
Quote Anchor link
@martijn: ok dan heb ik nu weer iets bijgeleerd. Ik heb nog nooit zo'n probleem gehad. Maar ik heb het getest, en met deze mogelijkheid is het ineens geen ISO-8859-1 (wat met xsl wel was) maar simpelweg utf-8.

Dit is wat ik toe heb gevoegd na eerst verbinding met de db te hebben gemaakt.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
mysql_query ('SET NAMES utf8');

mysql_query ('SET CHARACTER SET utf8');


Het werkt helemaal perfect nu. :D Echt super bedankt allemaal. Heb het eindelijk goed staan na ruim een week.. :D
 



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.