Toon posts:

[meta] Language en Charset altijd gekoppeld?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Vraag:
Ik ben bezig met een geavanceerde 'meta tag' generator. Via een drop down list box (<SElECT>...</SELECT>) kunnen gebruikers een taal selecteren. Automatisch bepaal ik de bijbehorenden charset (iso-code) van de taal.

Klopt mijn gedachtegang dat er ALTIJD aan één specifieke language slechts één charset gekoppeld is? Of horen bij bijvoorbeeld Engels (UK, US) verschillende indelingen?

Als er in een land meerdere talen worden gesproken los ik het op zoals in onderstaande voorbeelden staat aangegeven.

Language: Serbian (sr) latin
code:
1
2
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">
<META NAME="Language" CONTENT="sr">

Language: Serbian (sr) cyrillic
code:
1
2
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-5">
<META NAME="Language" CONTENT="sr">

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-09 00:49
ISO-char sets (uit de ISO-8859-x serie )hebben behoorlijk veel overlap. Neem nou Nederland; afgezien van de ij zijn alle karakters die we gebruiken in alle ISO-8859 charsets aanwezig, en de ij is in geen enkele aanwezig. Dus welke moet je nemen?
Daarnaast heb je het euro-probleem : die is alleen in Latin-9 c.q. 8859-15 beschikbaar. Dat maakt de beslissing vaak makkelijk.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Verwijderd

MSalters: Afgezien van de ij zijn alle karakters die we gebruiken in alle ISO-8859 charsets aanwezig, en de ij is in geen enkele aanwezig.
Welke "IJ" is dat? "IJ" of "Y"? In allebei de gevallen wel te vinden (zelfs in ASCII).

Wat de Nederlandse taal dan vervolgens weer met die karakters doet is verder niet zo spannend in dit verband.

  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

Op dinsdag 16 april 2002 09:52 schreef Arien het volgende:

[..]

Welke "IJ" is dat? "IJ" of "Y"? In allebei de gevallen wel te vinden (zelfs in ASCII).

Wat de Nederlandse taal dan vervolgens weer met die karakters doet is verder niet zo spannend in dit verband.
De 'ij' (in 1 karakter), dus niet de i-j, en ook niet de y.

Verwijderd

Poohbear: De 'ij' (in 1 karakter), dus niet de i-j, en ook niet de y.
Volgens de Van Dale:
ij (de ~): 1 letterteken bestaande uit twee i's, waarvan de tweede verlengd is.
Maar vervolgens komt de "ij" niet anders in de alfabetische sortering van bv een woordenboek voor?

Volgens mij is het alleen maar een ligature, maar ben geen neerlandicus.

Zie ook hier, dat ik via Google vond.

Verwijderd

Topicstarter
Op dinsdag 16 april 2002 09:48 schreef MSalters het volgende:
Daarnaast heb je het euro-probleem : die is alleen in Latin-9 c.q. 8859-15 beschikbaar. Dat maakt de beslissing vaak makkelijk.
In het onderstaande voorbeeld geef ik aan dat het om een japanse pagina gaat en definieer ik iso-2022-jp als charset. Het euro teken dat ik in de pagina gebruik wordt gewoon goed weergegeven. Het gaat erom dat een zoekmachine de onderstaande pagina als Japans indexeert, waarbij het natuurlijk de bedoeling is om gebruik te maken van Japanse karakters.
code:
1
2
3
4
5
6
7
8
9
10
11
<HTML>
    <HEAD>
        <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-2022-jp">
        <META NAME="Language" CONTENT="ja">

        <TITLE>Euro</TITLE>
    </HEAD>
    <BODY>
        &euro;
    </BODY>
</HTML>

Een pagina wordt dus weergegeven aan de hand van de charset die de bezoeker heeft ingesteld op zijn computer. Volgens mijn lijstje hoort iso-8859-15 bij Estonian. Nederland heeft bijvoorbeeld iso-8859-1. Ondanks mijn Nederlandse indeling wordt de euro gewoon weergegeven. Blijkbaar is het niet zo dat je persee voor iso-8859-15 moet kiezen!?

Zoals hieronder aangegeven, gebruik ik niet alleen de iso-8859 set, maar ook meer exotische indelingen.

Language: Japanese (ja)
code:
1
2
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-2022-jp">
<META NAME="Language" CONTENT="ja">

De vraag blijft enigzins staan: Heeft elke taal een eigen unieke charset?

Of bestaan er situaties waarin je moet kiezen voor een specifieke taal met een charset die eigenlijk niet bij die taal hoort?

Verwijderd

Sibash: Het gaat erom dat een zoekmachine de onderstaande pagina als Japans indexeert, waarbij het natuurlijk de bedoeling is om gebruik te maken van Japanse karakters.
Waarom dan niet de karakters allemaal als Unicode (ben je van dat probleem af) en de taal aangeven door het lang atribuut van de <html> tag (en/of het xml:lang attribuut)?

  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

Op dinsdag 16 april 2002 10:15 schreef Arien het volgende:

[..]

Volgens de Van Dale:
[..]

Maar vervolgens komt de "ij" niet anders in de alfabetische sortering van bv een woordenboek voor?

Volgens mij is het alleen maar een ligature, maar ben geen neerlandicus.

Zie ook hier, dat ik via Google vond.
Word een beetje een taal-discussie zo. 't Nederlands kent als enige taal een 'ij', die oorspronkelijk 1 letter was. Deze nam in ons alfabet de plaats in van de Y, die geen nederlandse letter is. Om typografische redenen werd de ij al snel een i-j, en bovendien kwamen er steeds meer woorden met een Y in onze taal voor.
Ik geloof dat de Winkler Prins ons alfabet 27 letters geeft, met aan het eind: w, x, ij, y, z.
De Van Dale en het groene boekje sorteren woorden met een IJ onder de I geloof ik, maar daar durf ik niet om te wedden.

[edit:]
Hmm... khad je linkje moeten lezen... :)
Overigens is die oude 'y' waar zij het over hebben geen 'griekse y', maar een nederlandse 'ij' die zonder puntjes geschreven werd.

Verwijderd

Topicstarter
Op dinsdag 16 april 2002 10:52 schreef Arien het volgende:
Waarom dan niet de karakters allemaal als Unicode (ben je van dat probleem af) en de taal aangeven door het lang atribuut van de <html> tag (en/of het xml:lang attribuut)?
Zie quote:
The character set defined in [ISO10646] is character-by-character equivalent to Unicode ([UNICODE]).
Welk verschil is er tussen het gebruik maken van ISO en Unicode, als beiden gelijkkwaardig zijn?

Verder:
The HTTP content type may be extended to give the character set. As an HTTP/1.0 header, this unfortunately breaks older browsers. As a META tag, it causes Netscape Navigator to load the appropriate charset before displaying the page. E.g.

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-2022-JP">

It is now recommended to always use this tag, even with the previously-default charset ISO-8859-1. Failure to do so may cause display problems where, for instance, the document uses UTF-8 punctuation characters but is displayed in ISO or ASCII charsets.

Verwijderd

Topicstarter
Ook W3C geeft de aanbeveling om de charset wel te definieren:
The optional parameter "charset" refers to the character encoding used to represent the HTML document as a sequence of bytes. Legal values for this parameter are defined in the section on character encodings. Although this parameter is optional, we recommend that it always be present.

Verwijderd

Sibash: Welk verschil is er tussen het gebruik maken van ISO en Unicode, als beiden gelijkwaardig zijn?
Geen. :)
Ook W3C geeft de aanbeveling om de charset wel te definieren.
Ik zei ook niet dat je hem niet moest definieren. ;) Wat ik bedoelde is om voor alle inhoud dezelfde charset te nemen (en die dus dan ook via HTTP headers en/of <meta> tag aan te geven).

Verwijderd

Topicstarter
Op dinsdag 16 april 2002 11:55 schreef Arien het volgende:
Ik zei ook niet dat je hem niet moest definieren. ;) Wat ik bedoelde is om voor alle inhoud dezelfde charset te nemen (en die dus dan ook via HTTP headers en/of <meta> tag aan te geven).
Altijd dezelfde charset gebruiken is natuurlijk makkelijk, maar druist wel tegen de specificaties in. Nu zal dat meestal niet al te veel uitmaken, want het gros van de internetters gebruikt IE. En IE neemt het ook niet zo nauw met de specificaties :)

Kijk even naar de onderstaande voorbeelden, getest in NN.
code:
1
2
3
4
5
6
7
8
9
10
<HTML>
    <HEAD>
        <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
        <META NAME="Language" CONTENT="nl">
        <TITLE>Euro</TITLE>
    </HEAD>
    <BODY>
        &euro;
    </BODY>
</HTML>

Geeft als resultaat:
code:
1
2
3
4
5
6
7
8
9
10
<HTML>
    <HEAD>
        <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-2022-jp">
        <META NAME="Language" CONTENT="ja">
        <TITLE>Euro</TITLE>
    </HEAD>
    <BODY>
        &euro;
    </BODY>
</HTML>

Geeft als resultaat: EUR


De opgegeven language maakt hierbij niet uit. De browser kijkt puur naar de opgegeven charset. Als de charset wordt weggelaten en alleen de language wordt opgegeven (bv 'jp'), zal de browser altijd het €-teken proberen te tonen. Iemand met een Japanse indeling zal het teken dus niet te zien krijgen.

Het aangeven van een gebruikte charset heeft dus zin. Een charset kan horen bij meerdere talen, maar hoort een taal altijd bij precies één charset? Dat blijft de vraag! Het lijkt me waarschijnlijk van wel, maar 't liefst wil ik het zeker weten.

Verwijderd

Sibash: Altijd dezelfde charset gebruiken is natuurlijk makkelijk, maar druist wel tegen de specificaties in.
Waarom? :?
Een charset kan horen bij meerdere talen...
Unicode hoort bij alle talen (vandaar dat ik dat voorstelde). Dan krijg je dus dit (XHTML):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    lang="nl" xml:lang="nl">
  <head>
    <meta http-equiv="Content-Type"
        content="text/html; charset=utf-8" />
    <title>Euro</title>
  </head>
  <body>
    &euro;
  </body>
</html>

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-09 00:49
Op dinsdag 16 april 2002 10:41 schreef Sibash het volgende:

[..]

In het onderstaande voorbeeld geef ik aan dat het om een japanse pagina gaat en definieer ik iso-2022-jp als charset. Het euro teken dat ik in de pagina gebruik wordt gewoon goed weergegeven. ... €

[..]

De vraag blijft enigzins staan: Heeft elke taal een eigen unieke charset?

Of bestaan er situaties waarin je moet kiezen voor een specifieke taal met een charset die eigenlijk niet bij die taal hoort?
Het euro teken, HTML stijl (€) is 6 karakters, ik bedoelde het enkele €-karakter (0xA4). Dat kun je dus niet in Latin-1 cq. 8859-1 schrijven.

Maar het antwoord op je vraag is nu duidelijk: Nee, niet elke taal heeft een unieke codeset, zelfs niet binnen de ISO 8859-1 serie.

PS. 16 bits Unicode 3.0 is voor de Chinezen blijkbaar nog steeds niet genoeg, dus voor Java is er nu wel een probleem :Y)

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Verwijderd

Topicstarter
[quote]Op dinsdag 16 april 2002 12:50 schreef Arien het volgende:
Waarom? :?
[..]
[quote]

Als je eerst de taal op 'jp' hebt gezet en vervolgens opgeeft de charset iso-8859-1 te gebruiken, dan klopt één van beiden niet.
OF je taal is niet Japans, of je charset is niet westers.

Degenen die tips hebben gegeven in dit topic: bedankt! 'k Heb weer wat nieuws geleerd. :7

  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
Let dus gewoon op het schrift dat ze in een bepaald land gebruiken. Je schreef hierboven bijvoorbeeld Ests, dat heeft een aantal specifieke letters, waardoor het een eigen charset heeft gekregen. Bij het Servisch (eerste post) worden twee alfabetten gebruikt, nl. het Latijnse en het Cyrillische.

Verwijderd

Sibash: Als je eerst de taal op 'jp' hebt gezet en vervolgens opgeeft de charset iso-8859-1 te gebruiken, dan klopt één van beiden niet. OF je taal is niet Japans, of je charset is niet westers.
Ze hebben in zoverre wat met elkaar te maken dat japans het japanse schrift gebruikt wat niet in iso-8859-1 beschikbaar is. Als je japans schrijft met westerse letters, blijft het japans (voor bepaalde waarden van japans natuurlijk).

De character set geeft alleen aan hoe bytes op characters te mappen. De taal geeft aan in welke taal de tekst is.
Pagina: 1