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 server
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 compte
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 flagrant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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";
Quelqu'un aurait'il un début de réponse parce que je vais bientot péter un boulon la dessus
Partager