Bonjour j'ai un gros problème avec l'utf-8 depuis que je suis passé a perl 5.8.8, je stocke dans une base de données du texte que j'encode en utf-8
voici mon script de teste
voici ma table sous ms sql serverCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #!G:/PROGRA~1/Perl/bin/perl.exe -w use DBI; use Encode; use LWP::Simple; require HTML::TreeBuilder; require HTML::FormatText; my $data = get("<a href="http://www.xys.org/pages/luxun.html" target="_blank">http://www.xys.org/pages/luxun.html</a>"); my $tree = HTML::TreeBuilder->new; $tree->parse($data); my $formatter = HTML::FormatText->new; $data = $formatter->format($tree); my $DSN = 'driver={SQL Server};Server=VISTA\MSSQL; database=test; uid=sa;pwd=2658;'; my $dbh = DBI->connect("dbi:ODBC:$DSN", { odbc_cursortype => DBI::SQL_CURSOR_DYNAMIC, AutoCommit => 0 } ); $data = encode("utf8", $data); my $i = $dbh->prepare("insert into utf(texte) values(?)"); $i->execute($data);
Avec mon ancièenne version de perl les caractères encoder grace aux modules Encode etait insérié comme il le fallait dans sql serveur et il suffisait de faire ceci pour s'en rendre compteCode:
1
2
3
4
5 create table utf ( id int identity(1,1), texte ntext not null, )
seulement sous perl 5.8 les caractères sorte mal :? , ils ne sont pas "normaux" voici deux petit screenshot le probème est flagrantCode:
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 #!G:/PROGRA~1/Perl/bin/perl.exe -w use DBI; my $DSN = 'driver={SQL Server};Server=VISTA\MSSQL; database=test; uid=sa;pwd=2658;'; my $dbh = DBI->connect("dbi:ODBC:$DSN", { odbc_cursortype => DBI::SQL_CURSOR_DYNAMIC, AutoCommit => 0 } ); $dbh->{LongReadLen} = 100000000; $dbh->{LongTruncOk} = 1; my $i = $dbh->prepare("select * from utf"); $i->execute; print "Content-type: text/html\n\n"; print "<html>\n"; print "<head>\n"; print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n"; print "</head>\n"; print "<body>\n"; while(my $rows = $i->fetchrow_hashref()) { print "==========================================\n"; print "$rows->{'texte'}\n"; print "==========================================\n"; } print "</body>\n"; print "</html>\n";
http://vodevil.free.fr/prob.jpg
http://vodevil.free.fr/prob2.jpg
Quelqu'un aurait'il un début de réponse parce que je vais bientot péter un boulon la dessus :aie: :mrgreen: