Benne: Unicode

Beitrag lesen

Hallo,

nachdem ich vor ein paar Tagen mein Linux System komplett auf UTF-8 umgestellt habe, bin ich gerade dabei die ersten Perl Skripte auf die neue Technologie anzupassen :D

Leider ist das im Allgemeinen eine sehr anstregende Arbeit und man wünscht sich doch im geheimen, dass die ganze Welt _sofort_ auf UTF-8 umstellt ;)

Bis es soweit ist kämpfe ich mit den Problemen weiter ;)
Momentan scheitere ich an zwei Hürden, die ich nur mit hässlichen Workarounds beheben kann.

Mein Perl Skript generiert eine XHTML Seite mit Formular. Die Werte werden anschließend an das gleiche Skript zugesendet und verarbeitet.
Zunächst habe ich darauf geachtet, dass dem Browser auch an allen Stellen mitgeteilt wird, dass es sich um ein UTF-8 Dokument handelt und er es entsprechend behandeln soll:

  
<?xml version="1.0" encoding="UTF-8" ?>  
...  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  

sowie durch setzen des HTTP-Header Attributs:

  
Content-Type: text/html; charset=UTF-8  

Zubeachten ist im nächsten Schritt, dass ich das CGI Modul für die Parameterauswertung verwende.

  
use encoding 'utf8';  
use CGI;  
my $q = new CGI;  
print $q->param('Feld1'), "<br/>\n";  

Die Methode param gibt allerdings keinen UTF-8 String zurück, sondern einen byte-orientierten String.
Die Folge: aus "täst" wird "täst"

Das gleiche Problem habe ich auch bei meinem Datenbankzugriff über das <http://search.cpan.org/author/TIMB/DBI-1.51/DBI.pm@DBI Modul>.

Mein Workaround ist bisher folgender:

  
$str = "$str";  

Das Formularproblem löse ich durch setzen von accept-charset:

  
<form ... accept-charset="ISO-8859-1">  

.. was dann gleichzeitig die Weiterverarbeitung (schicken per Email) deutlich erleichtert. Das gefällt mir allerdings nicht.

Ich vermute allerdings hier eine gemeinsame Ursache, kann mir jemand weiter helfen?

Gruß,
Benne

--
ie:% fl:( br:> va:) ls:> fo:| rl:° ss:) de:[ js:| ch:| mo:} zu:)