[XHTML] - Character-sets door elkaar gebruiken

Pagina: 1
Acties:

  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Topicstarter
Voor een - mogelijk - nieuw project wil ik me vast verdiepen in eventuele valkuilen.

Een mogelijke "beer" op de weg, is het volgende. De beheer-omgeving die ik moet gaan bouwen, is Engelstalig uitgevoerd. Dat wil zeggen ... alle standaard teksten en uitleg staat in het Engels. Echter ... bepaalde gegevens in formulieren moeten in het Rusissch (dus met Russische karakters) ingevoerd gaan worden. De gegevens worden ook in Rusland ingevoerd ... dus op computers die waarschijnlijk standaard op russische karaktersets zijn ingesteld.

Mijn vraag is dus, of het mogelijk is om twee karakter-sets door elkaar te gebruiken. En of je zoiets wellicht per <input> kan instellen.

Kan ik zoiets zelf testen op mijn (Engelse) Windows?

Alvast dank voor het meedenken.

  • mithras
  • Registratie: Maart 2003
  • Niet online
Als je alles Unicode (UTF-8) houdt, kan je ascii, russchisch en karakters als chinees, koreaans en japans in laten voeren. Zorgen dus dat je een Unicode doctype declaratie in je head hebt staan hebt, en daar waar je de gegevens opslaat (SQL database?) ook de Unicode characterset aanhoudt :)

[ Voor 7% gewijzigd door mithras op 09-01-2007 15:00 ]


  • Icelus
  • Registratie: Januari 2004
  • Niet online
gvanh schreef op dinsdag 09 januari 2007 @ 14:49:
Voor een - mogelijk - nieuw project wil ik me vast verdiepen in eventuele valkuilen.

Een mogelijke "beer" op de weg, is het volgende. De beheer-omgeving die ik moet gaan bouwen, is Engelstalig uitgevoerd. Dat wil zeggen ... alle standaard teksten en uitleg staat in het Engels. Echter ... bepaalde gegevens in formulieren moeten in het Rusissch (dus met Russische karakters) ingevoerd gaan worden. De gegevens worden ook in Rusland ingevoerd ... dus op computers die waarschijnlijk standaard op russische karaktersets zijn ingesteld.

Mijn vraag is dus, of het mogelijk is om twee karakter-sets door elkaar te gebruiken. En of je zoiets wellicht per <input> kan instellen.

Kan ik zoiets zelf testen op mijn (Engelse) Windows?

Alvast dank voor het meedenken.
De browser zal de karakterset gebruiken die je in ‘de head’ opgeeft. Wanneer een karakter niet in die karakterset voorkomt zal de browser deze vervangen door een entiteit (&#1234;).

Als je als karakterset bijvoorbeeld ISO-8859-1 gebruikt en iemand uit Rusland vult in een tekstveld een Д in, dan zal de browser deze (bij een get/post) als een &#1044; doorsturen (dit is de Unicode code).

Het beste kun je daarom gebruik maken van UTF-8; hiermee kun je alle karakters ‘direct’ gebruiken en worden er geen entiteiten gebruikt.

Developer Accused Of Unreadable Code Refuses To Comment


  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Topicstarter
Ok ... en iemand met standaard "Russische" karakters ... zal dan z'n keyboard layout (IME) moeten veranderen als hij ook Westerse karakters wil invoeren? Inmiddels heb ik bij mezelf een russische keyboard layout toegevoegd (via de language bar) ... en daarmee kan ik inderdaad keurig Russische karakters intypen.

Maakt het in MySQL dan nog uit, of ik UTF8_general_ci gebruik of een andere UTF-8 variant?

  • mithras
  • Registratie: Maart 2003
  • Niet online
gvanh schreef op dinsdag 09 januari 2007 @ 15:02:
Maakt het in MySQL dan nog uit, of ik UTF8_general_ci gebruik of een andere UTF-8 variant?
of de UTF8_unicode_ci; het maakt niet zo heel veel uit volgens mij, zolang je maar niet aan de latin gaat maar je bij de UTF8 houdt.

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

Icelus schreef op dinsdag 09 januari 2007 @ 14:57:
[...]
De browser zal de karakterset gebruiken die je in ‘de head’ opgeeft.
[..]
Behalve als de webserver geconfigureerd is zonder een standaard charset. Die is wel te overriden dmv van een httpheader mee te geven, in PHP is dat:
PHP:
1
Header("Content-Type: text/html; charset=UTF-8");

Dit geintje diverse keren gezien dat de webserver dus de header: ISO-8859-1 gaf, en in de HTML ISO-8859-6 (Arabisch), en mooi dat het als ISO-8859-1 werd weergegeven door IE en FF.

Ey!! Macarena \o/


  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Topicstarter
of de UTF8_unicode_ci; het maakt niet zo heel veel uit volgens mij, zolang je maar niet aan de latin gaat maar je bij de UTF8 houdt.
Dat is mijn ervaring tot nu toe ook ... fijn om dat even bevestigd te hebben. Ik kan in de MySQL documentatie ook niets vinden over het eventueel onderscheid.
Dit geintje diverse keren gezien dat de webserver dus de header: ISO-8859-1 gaf, en in de HTML ISO-8859-6 (Arabisch), en mooi dat het als ISO-8859-1 werd weergegeven door IE en FF.
Hele goeie tip ... dank je wel! Dat gaat vast een hoop ergernis schelen! :P

[ Voor 89% gewijzigd door gvanh op 09-01-2007 15:46 ]


  • Blaise
  • Registratie: Juni 2001
  • Niet online
Je kan ook dit in een .htaccess bestand plaatsen in een map, dan hoef je je nergens meer zorgen over te maken:
code:
1
AddDefaultCharset utf-8

Je server stuurt bij alle bestanden in die map + submappen automatisch een charset header mee, zodat je dat niet voor elk bestand apart hoeft aan te geven.
of de UTF8_unicode_ci; het maakt niet zo heel veel uit volgens mij, zolang je maar niet aan de latin gaat maar je bij de UTF8 houdt.
Met latin werkt het ook gewoon, alleen zijn de veldlengtes dan niet meer exact omdat UTF8 voor één karakter soms meerdere tekens nodig heeft. Pas als een veld wordt afgekapt krijg je rare vervormingen.
Pagina: 1