Leser: 4
|< 1 2 >| | 13 Einträge, 2 Seiten |
1
2
3
4
5
6
7
CREATE TABLE `test` (
`id` int(11) NOT NULL auto_increment,
`text` varchar(255) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `test` (`id`, `text`) VALUES
(1, 'Mühle, über phpmyadmin eingefügt');
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
#!/usr/bin/perl use strict; use warnings; use utf8; binmode STDIN, ":utf8"; binmode STDOUT, ":utf8"; binmode STDERR, ":utf8"; use CGI; use DBI; use CGI::Carp qw( fatalsToBrowser ); my $cgi = CGI->new(); $cgi->charset("utf8"); print $cgi->header( -type => "text/plain", -charset => "UTF-8" ); my $aRef; my $query = "REPLACE INTO test SET id = 2, text = ?;"; my $string = "Mühle"; my $dbi = DBI->connect( "DBI:mysql:test", "test", "test", { RaiseError => 1, mysql_enable_utf8 => 1 } ) or die( $! ); $dbi->do($query, undef, $string); $aRef = $dbi->selectall_arrayref( "SELECT id, text FROM test ORDER BY id" ); print "\n\n\# erster Versuch mit NAMES auf Standard\n"; print "\# id $$_[0]: $$_[1]\n" foreach @$aRef ; # erster Versuch mit NAMES auf Standard # id 1: Mühle, über phpmyadmin eingefügt # id 2: Mühle (phpmyadmin ebenfalls falsch) $dbi->do("SET NAMES utf8"); $dbi->do($query, undef, $string); $aRef = $dbi->selectall_arrayref( "SELECT id, text FROM test ORDER BY id" ); print "\n\n\# zweiter Versuch mit NAMES auf utf8\n"; print "\# id $$_[0]: $$_[1]\n" foreach @$aRef ; # zweiter Versuch mit NAMES auf utf8 # id 1: Mühle, über phpmyadmin eingefügt # id 2: Mühle (in phpmyadmin korrekt) $dbi->do($query, undef, $string); $dbi->do("SET NAMES latin1"); $aRef = $dbi->selectall_arrayref( "SELECT id, text FROM test ORDER BY id" ); print "\n\n\# dritter Versuch mit NAMES auf utf8 fürs einfügen und auf latin1 fürs auslesen\n"; print "\# id $$_[0]: $$_[1]\n" foreach @$aRef ; # dritter Versuch mit NAMES auf utf8 fürs einfügen und auf latin1 fürs auslesen # id 1: Mühle, über phpmyadmin eingefügt # id 2: Mühle (in phpmyadmin auch korrekt) $dbi->do($query, undef, $string); $dbi->do("SET NAMES utf8"); $aRef = $dbi->selectall_arrayref( "SELECT id, text FROM test ORDER BY id" ); print "\n\n\# vierter Versuch mit NAMES auf latin1 fürs einfügen und auf utf8 fürs auslesen\n"; print "\# id $$_[0]: $$_[1]\n" foreach @$aRef ; # vierter Versuch mit NAMES auf latin1 fürs einfügen und auf utf8 fürs auslesen # id 1: Mühle, über phpmyadmin eingefügt # id 2: Mühle (in phpmyadmin ebenfalls falsch)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
#!/usr/bin/perl use strict; use warnings; use encoding "utf8"; use CGI; use DBI; use CGI::Carp qw( fatalsToBrowser ); my $cgi = CGI->new(); print $cgi->header( -type => "text/plain", -charset => "UTF-8" ); my $aRef; my $query = "REPLACE INTO test SET id = 2, text = ?;"; my $string = "Mühle"; my $dbi = DBI->connect( "DBI:mysql:test", "test", "test", { RaiseError => 1, mysql_enable_utf8 => 1 } ) or die( $! ); print "String: $string"; # String: ;Mühle $dbi->do("SET NAMES utf8"); $dbi->do($query, undef, $string); $aRef = $dbi->selectall_arrayref( "SELECT id, text FROM test ORDER BY id" ); print "\n\n\# zweiter Versuch mit encoding und NAMES auf utf8\n"; print "\# id $$_[0]: $$_[1]\n" foreach @$aRef ; # zweiter Versuch mit encoding und NAMES auf utf8 # id 1: Mühle, über phpmyadmin eingefügt # id 2: Mühle
$DBH->do("set names utf8");
Gast+2008-09-14 18:39:24--Nur weil man damit ein paar exotische Sprachen mit darstellen kann. Die kaum einer braucht.
|< 1 2 >| | 13 Einträge, 2 Seiten |