[xhtml?]Character encoding hell

Pagina: 1
Acties:
  • 135 views sinds 30-01-2008
  • Reageer

  • megamuch
  • Registratie: Februari 2001
  • Laatst online: 29-01 20:14

megamuch

Tring Tring!

Topicstarter
Sinds een paar dagen ben ik begonnen met het opschonen van code in m'n huidige website en hem xhtml 1.0 transitional te valideren. Dat is redelijk gelukt tot nu toe. De meeste pagina's valideren prima met de validator van w3c.
De code is nog niet optimaal, maar het begin is er iig.

Waar ik echter tegenaan loop is het feit dat m'n euro tekens niet verschijnen. Het zijn tegenwoordig verkantjes. Ook copy paste stukken uit MS Word met deze quotes: “ ” verschijnen niet meer. Ga ik de site vervolgens valideren, krijg ik een mooie error met de melding
non SGML character number 128
Char nummer 128 is dus ook het euroteken. (alt + 0128)

Vervolgens ben ik hier op GoT en google gaan zoeken, heb ik anne van kesteren's site bezocht en z'n verhaal gelezen over UTF-8, maar duidelijk is het me er niet opgeworden.

Ook apache (1.33) aangepast met AddDefaultCharset ISO-8859-15, echter zonder resultaat.
Zelfs in de code heb ik
HTML:
1
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-15" />


toegevoegd, en wederom zonder resultaat.

Kan iemand mij vertellen wat de juiste instellingen zijn voor een site die in character encoding iso-8859-15 op het scherm moeten komen zodat ik gewoon weer het euro teken kan gebruiken?

Verstand van Voip? Ik heb een leuke baan voor je!


  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

De basis is simpel: als je een charset gebruikt, gebruik die dan ook overal. Dus in je editor, in de headers, in je meta-tags, op je server, enz. Dan ziet het er overal hetzelfde uit en blijft een € een € :)

Heb je eventueel een testpagina online staan?

[ Voor 12% gewijzigd door André op 12-05-2005 23:15 ]


  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Wat staat er in je source: € of &euro;?

En waarom gebruik je geen utf-8 of utf-16?

[ Voor 32% gewijzigd door CrashOne op 12-05-2005 23:18 ]

Huur mij in als freelance SEO consultant!


  • megamuch
  • Registratie: Februari 2001
  • Laatst online: 29-01 20:14

megamuch

Tring Tring!

Topicstarter
CrashOne schreef op donderdag 12 mei 2005 @ 23:17:
Wat staat er in je source: € of &euro;?

En waarom gebruik je geen utf-8 of utf-16?
In m'n database staat € (echt eurotekentje, ingevoerd dmv alt+0128)

Ik wil best over naar utf 8, geen probleem, alleen weet ik dus niet welke handelingen ik daarvoor allemaal moet aanpassen om het geheel utf-8 te maken.

Tis een eigen server, dus ik kan aanpassen wat ik wil.

Test pagina niet nodig. check hier maar:

http://www.bcn-nightlife.com/en/clubs/21

Waarschuwing: ja de pagina is spaghetti code, ja ik ben bezig met aanpassen, ja het is nog niet helemaal juist, ja ik zal m'n leven beteren. Maar daar is dit topic niet voor geopend. Het gaat nu even om de character encoding, niet om het misbruik bepaalde html tags. Ik vraag jullie dan ook vriendelijk dat even over het hoofd te zien. :)

[ Voor 30% gewijzigd door megamuch op 12-05-2005 23:28 ]

Verstand van Voip? Ik heb een leuke baan voor je!


  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.


  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

Als ik in die source kijk zie ik &euro; staan en geen €, verder zie ik dat je headers enzo allemaal goed staan.

  • RSpliet
  • Registratie: Juni 2003
  • Laatst online: 27-11-2025

RSpliet

*blink*

En wat vind je van &# 128; dan (zonder de spatie tussen het hekje en de 128)? Werkt zelfs in safari :) &#128;

[ Voor 35% gewijzigd door RSpliet op 12-05-2005 23:34 ]

Schaadt het niet, dan baat het niet


  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

Seven of Nine schreef op donderdag 12 mei 2005 @ 23:33:
En wat vind je van &# 128; dan (zonder de spatie tussen het hekje en de 128)? Werkt zelfs in safari :) &#128;
Dat kan wel, maar het is een workaround. Het zou gewoon op een normale manier zonder entities moeten werken :)

  • RSpliet
  • Registratie: Juni 2003
  • Laatst online: 27-11-2025

RSpliet

*blink*

André schreef op donderdag 12 mei 2005 @ 23:34:
[...]

Dat kan wel, maar het is een workaround. Het zou gewoon op een normale manier zonder entities moeten werken :)
Tsja, dan gok ik erop dat het een UTF-8 tekstbewerkingstoepassing is (notepad?), of iets in die trant. Voor goede tekst'be'werkers voor dit werk moet je echter niet bij mij zijn, ik werk met SciTE en gedit en ken deze problemen niet omdat ik van de workarounds gebruik maak ;).

Edit:


U+20AC EURO SIGN

Algemene details voor het teken

Unicode categorie: Symbool, Valuta

Verschillende handige representaties

UTF-8: 0xE2 0x82 0xAC
UTF-8 octaal uitgedrukte: \342\202\254
Decimale entiteit: €

[ Voor 20% gewijzigd door RSpliet op 12-05-2005 23:42 ]

Schaadt het niet, dan baat het niet


  • megamuch
  • Registratie: Februari 2001
  • Laatst online: 29-01 20:14

megamuch

Tring Tring!

Topicstarter
Mijn fout, die had ik naar &euro ; aangepast omdat dat wel werkt. Echter in m'n Database staan gewoon de eurotekens dus dat schiet niet op. Ik zal weer even het &euro omzetten in €.

(in de tekst komt overigens wel het volgende tegen:
the DJŽs provide
Waar die "Z-met dakje" vandaan komt, geen idee, maar het moet een enkele quote zijn :/

Verstand van Voip? Ik heb een leuke baan voor je!


  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

Hmm, als ik hem nu op ISO-8859-1 zet krijg ik wel overal de juiste tekens, ik vermoedt dat jouw database ze als ISO-8859-1 opslaat een serveert :)

  • RSpliet
  • Registratie: Juni 2003
  • Laatst online: 27-11-2025

RSpliet

*blink*

megamuch schreef op donderdag 12 mei 2005 @ 23:41:
Mijn fout, die had ik naar &euro ; aangepast omdat dat wel werkt. Echter in m'n Database staan gewoon de eurotekens dus dat schiet niet op. Ik zal weer even het &euro omzetten in €.

(in de tekst komt overigens wel het volgende tegen:

[...]


Waar die "Z-met dakje" vandaan komt, geen idee, maar het moet een enkele quote zijn :/
Het zal er allemaal hoogstwaarschijnlijk weer 'goed' uitzien als je de character encoding van je document op UTF-8 iso-8859-1 zet. Echter 'wil' jij ISO-8859-15? Waarom als ik vragen mag?

[ Voor 11% gewijzigd door RSpliet op 12-05-2005 23:46 ]

Schaadt het niet, dan baat het niet


  • megamuch
  • Registratie: Februari 2001
  • Laatst online: 29-01 20:14

megamuch

Tring Tring!

Topicstarter
Seven of Nine schreef op donderdag 12 mei 2005 @ 23:44:
[...]


Het zal er allemaal hoogstwaarschijnlijk weer 'goed' uitzien als je de character encoding van je document op UTF-8 iso-8859-1 zet. Echter 'wil' jij ISO-8859-15? Waarom als ik vragen mag?
Ik wil iso-8859-15 vanwege feit dat ik ergens (some url, waarschijnlijk Got) las, dat ik iso-8859-15 nodig had om hem goed te laten valideren.

Nu weer aangepast naar iso-8859-1 en inderdaad, alles komt weer netjes op het scherm. De xhtml validator blijft overigens nog steeds zeuren over
non SGML character number 128
Ik had gehoopt, dat met iso-8859-15 op te lossen...

Verstand van Voip? Ik heb een leuke baan voor je!


Verwijderd

En wat vind je van &# 128; dan (zonder de spatie tussen het hekje en de 128)? Werkt zelfs in safari :) &#128;
&# 128; is eigenlijk een Unicode control-karakter, maar werd door Microsoft verkracht samen met een stel andere. (Het is dus ook onjuist.) Zie: http://intertwingly.net/s...i18n.html#CleaningWindows

Zie hier voor wat PHP conversie functies: http://annevankesteren.nl/2005/05-character-references

Verwijderd

Ik wil iso-8859-15 vanwege feit dat ik ergens (some url, waarschijnlijk Got) las, dat ik iso-8859-15 nodig had om hem goed te laten valideren.
Onzin. Daarnaast, als je XHTML gebruikt kun je beter UTF-8 gebruiken zodat je compatible bent met XML parsers.

  • megamuch
  • Registratie: Februari 2001
  • Laatst online: 29-01 20:14

megamuch

Tring Tring!

Topicstarter
Verwijderd schreef op vrijdag 13 mei 2005 @ 10:39:
[...]
Onzin. Daarnaast, als je XHTML gebruikt kun je beter UTF-8 gebruiken zodat je compatible bent met XML parsers.
Dan zou ik toch het volgende moeten doen:

- Alle data in Mysql DB omzetten naar utf-8
- DefaultCharset omgooien naar utf-8
- Metatag aanpassen naar utf-8 (hoewel jij daar op je weblog naar referred als 'evil')

Mijn vraag is dan alsnog: Stel dat alles UTF-8 is, mag ik dan om xhtml valid te zijn wel gewoon € in m'n source hebben of moet dat als nog € worden?

Verstand van Voip? Ik heb een leuke baan voor je!


  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

Hou er wel rekening mee dat niet alle versies van MySQL compatible zijn met UTF-8 ;)

Verwijderd

Mijn vraag is dan alsnog: Stel dat alles UTF-8 is, mag ik dan om xhtml valid te zijn wel gewoon € in m'n source hebben of moet dat als nog & euro; worden?
& euro; mag theoretisch maar is niet compatible met welke XML parser dan ook tenzij deze parser ook valideert. Direct het teken invoeren mag en je mag een hexadecimale of decimale karakter referentie gebruiken.

Verwijderd

André schreef op vrijdag 13 mei 2005 @ 15:05:
Hou er wel rekening mee dat niet alle versies van MySQL compatible zijn met UTF-8 ;)
dat maakt niet zo heel veel uit, in mijn database staat André ook als André

zolang de tool die het erin stopt en de tool die het eruit haalt die bitjes maar interpreteren als UTF-8 is alles ok. (mijn MySQL front gaat daar dus niet ok mee om)

Verwijderd

Je zegt dat je het uit een mysql database haalt, gebruik je daar PHP voor? Zo ja, kun je dan niet htmlentities() gebruiken? Met deze functie kun je ook de charset veranderen.

Verwijderd

Veranderen? Tell me! Ik dacht dat je alleen iconv en eventueel (mocht het een ISO-8859-1 compatible string zijn) utf8_encode kon gebruiken.

Verwijderd

Verwijderd schreef op zaterdag 14 mei 2005 @ 16:05:
Veranderen? Tell me! Ik dacht dat je alleen iconv en eventueel (mocht het een ISO-8859-1 compatible string zijn) utf8_encode kon gebruiken.
string htmlentities ( string string [, int quote_style [, string charset]])

Net als htmlspecialchars() is er een optioneel derde parameter dat de karakter set definieert. Deze parameter was toegevoegd in PHP 4.1.0. Standaard wordt momenteel de ISO-8859-1 tekenset.

Bron: http://nl3.php.net/manual/nl/function.htmlentities.php

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

megamuch schreef op vrijdag 13 mei 2005 @ 15:03:
- Alle data in Mysql DB omzetten naar utf-8
Dat is een klein probleem... MySQL ondersteund AFAIK nog géén UTF-8 in een database. Misschien als je de database type veranderd naar InnoDB, dat je het dan wél hebt, maar dat ben ik niet 100% zeker...

* ZUCHT * Ik moet beter lezen... André was me ff voor... :9

[ Voor 10% gewijzigd door CH4OS op 15-05-2005 10:16 ]


Verwijderd

Net als htmlspecialchars() is er een optioneel derde parameter dat de karakter set definieert. Deze parameter was toegevoegd in PHP 4.1.0. Standaard wordt momenteel de ISO-8859-1 tekenset.
Die charset parameter is ervoor om aan te geven waar de string die je de functie geeft in gecodeerd is. Niet om aan te geven waar de string die je de functie geeft in gecodeerd moet worden. Dus nogmaals: Tell me!

Verwijderd

dat maakt niet zo heel veel uit, in mijn database staat André ook als André
Euh? Weet je zeker dat je niet gewoon een PHPMyAdmin pagina bekijkt gecodeerd in iso-8859-1? (Of eigenlijk, windows-1252 aangezien iso-8859-1 een "mythe" is dankzij o.a. IE en Mozilla.)

Het probleem is volgens mij voornamelijk het zoeken e.d. Maar je zou eerst je tekst kunnen normalizen naar de Unicode normalization form KD of KC. Dan heb je het probleem denk ik niet meer. Zie ook: http://annevankesteren.nl/archives/2005/05/unicode (Zie ook comment 4, welke het bij het rechte eind heeft.)
Pagina: 1