Schrift
[thread]3599[/thread]

russiche zeichen in db: russiche zeichen aus db einlesen



<< >> 6 Einträge, 1 Seite
svet
 2005-08-12 19:26
#33421 #33421
User since
2005-08-11
4 Artikel
BenutzerIn
[default_avatar]
Hallo,
ich bin grade dabei, Perl zu lernen. Und schon stehe ich vor ersten richtigen Aufgabe.
Und zwar: russiche Zeichen aus db  einlesen, und ausgeben bzw. wieder in db schreiben.
Ich weis, dass man uf8,Unicode verwendet. Aber wie macht man Das richtig?
Für jede Anweisung bin ich dankbar.
ptk
 2005-08-12 22:24
#33422 #33422
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Sind die Daten schon in der DB drinnen? Welche DB verwendest du?
GwenDragon
 2005-08-13 13:05
#33423 #33423
User since
2005-01-17
14533 Artikel
Admin1
[Homepage]
user image
Du musst bei der Datenbank das charset einstellen.
Für MySQL schau einmal unter
http://dev.mysql.com/doc/mysql/en/charset.html
oder z. B. http://dev.mysql.com/doc/mysql/en/charset-connection.html

Der Zeichensatzkodierung könnte auch koi8r sein ;)\n\n

<!--EDIT|GwenDragon|1123924171-->
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

svet
 2005-08-18 19:07
#33424 #33424
User since
2005-08-11
4 Artikel
BenutzerIn
[default_avatar]
Danke! Mit dem "charset" kann ich jetzt russiche Zeichen aus DB lesen und bearbeiten. Dafür braucht man auch Klasse "Encode 'from_to'" und utf8.
Im Script sieht das so aus:
...
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use Encode 'from_to';
use utf8;
...
my $sth = $dbh_r->prepare("set CHARACTER SET cp1251_koi8;");
$sth->execute();

$sth = $dbh_r->prepare( "SELECT * FROM test_table_org;");
$sth->execute();
...
while (my $row = $sth -> fetchrow_arrayref){
     ...
     Encode::from_to($row->[1], "cp1251", "utf-8");
     ...
}


Das Problem, das noch bleibt: in DB russiche Zeichen schreiben. Hoffentlich ich löse es bald.
Noch mal Danke!
:D

edit pq: code-tags hinzugefügt\n\n

<!--EDIT|pq|1124379579-->
svet
 2005-08-23 14:12
#33425 #33425
User since
2005-08-11
4 Artikel
BenutzerIn
[default_avatar]
Ich hab's lange herum experimentiert, vergeblich! :(

Russische Zeichen in DB schreiben kann ich immer noch nicht. Anderes gesagt, Die werden von DB nicht erkannt. Man sieht nur ???±??? ???? ?? ?°???±?±???®?¬

Was mache ich falsch oder nicht mache? Warum kann ich aus DB
ohne Problem lesen, aber schreiben nicht?

Wer hat eine Anung, helfen sie mir, bitte!
svet
 2005-08-24 17:51
#33426 #33426
User since
2005-08-11
4 Artikel
BenutzerIn
[default_avatar]
Mein Hilferuf wurde nicht erhört. Also muste ich selbst was unternehmen und...ich hab's geschaft.

Um in DB zu schreiben braucht man folgendes:
Code: (dl )
1
2
3
4
5
6
7
8
...
$sth =$dbh_r->prepare("SET character_set_results='utf8'");
$sth->execute();
$sth =$dbh_r->prepare("set character_set_connection='utf8'");
$sth->execute);  
...
Encode::from_to($row->[1], "utf-8", "cp1251");
...

Natürlich vorrausgesetzt, dass die Tabelen in Db in utf-8 kodiert    :p

edit pq: code-tags hinzugefügt!\n\n

<!--EDIT|pq|1124895813-->
<< >> 6 Einträge, 1 Seite



View all threads created 2005-08-12 19:26.