perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 21
Click for quality!




11.02.2012 / 07:06

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


Beitragsonderzeichen matchen?
Seitenanfang
Hi,

ich möchte ein sonderzeichen matchen: ą

Die Zeichentabelle von gnome zeigt mir zu diesem zeichen folgende details:

UTF-8: 0xC4 0x85
UTF-16: 0x0105

C-Oktal terminiertes UTF-8: \304\205
Dezimale XML-Entität: ą

Das ą kommt aus einer in utf-8 kodierten datenbank und steht in $teststring.

Die frage ist nun wie man das matchen kann:

if($teststring =~ /\304\205/)
{
print "true\n";
}

So funktioniert es leider nicht. Ich vermute es funktioniert deshalb nicht, weil $teststring nicht im gleichen zeichensatz ist wie es im regex gematcht wird.
Ich habe auch schon
$teststring = encode('utf-8', $teststring);
davor gesetzt, was aber leider auch nichts bringt.

Hat jemand eine idee wie das geht?

Datum: 22.05.2008-20:16

Beitragre: sonderzeichen matchen?
Seitenanfang
Hallo!

Da ich nun keinen solchen $teststring hier habe, ist es etwas schwierig, dein Problem nachzuvollziehen ;)

Aber versuche mal folgendes:
- Speicher dein Skript komplett in utf-8 und setze ein

use utf8;
an den Anfang des Skriptes. Das hat zur Folge, dass du dieses Sonderzeichen direkt in den Quellcode innerhalb des RAs eingeben kannst.
- Wenn du die Daten via DBI aus einer MySql-Datenbank ausliest, wird es Probleme mit utf-8 geben (siehe z.B. http://www.simplicidade.org/notes/archives/2005/12/utf8_and_dbdmys.html)
Ein
utf8::decode($teststring)
sollte helfen.

Aus eigener leidvoller Erfahrung wette ich jedoch, dass das Problem damit noch nicht gelöst ist ;)
Versuche es einfach mal, und melde dich dann wieder.

Grüße, Skrilax

Datum: 23.05.2008-09:39

Beitragre: sonderzeichen matchen?
Seitenanfang
Hi,

use utf8; habe ich bereits verwendet, hatte nur vergessen das zu erwähnen.

Ich habe es aber nun glaube ich hinbekommen. Neben dem Hinweis von Skrilax ist noch ein $dbh->do("SET NAMES 'utf8'"); notwendig.

Ein vollständiger code würde also so aussehen:


use utf8;
use DBI;
use Encode;

#connect to db
# ...

#Voraussetzung: die datenbank sowie die inhalte sind bereits utf-8 codiert
$dbh->do("SET NAMES 'utf8'");

#daten aus db in $teststring schreiben
# ...

if (! utf8::is_utf8($teststring)) {
print "decoding\n";
utf8::decode($teststring);
}

if($teststring =~ /ą/)
{
print "true!!!!\n";
}

Vielen Dank für die hilfe.

Datum: 23.05.2008-11:38

-






-
-