IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Soucie de transcodage utf-8 vers utf-16LE


Sujet :

Langage Perl

  1. #1
    Membre actif Avatar de mobscene
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 331
    Points : 234
    Points
    234
    Par défaut Soucie de transcodage utf-8 vers utf-16LE
    J'ai une applie qui doit insérer des données dans une base SQL, les tables sont au format utf-16LE, j'ai donc utilisé cette méthode pour le trancodage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    use Unicode::String qw(utf16le);
    Unicode::String->stringify_as('utf16le');
     
    my $utf16 = utf16($var_en_utf8);
    J'utilise correctement Unicode::String masi j'ai quelques fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [Mon Jan  8 20:51:54 2007] index.pl: byteswap argument #1 not long enough at G:/Program Files/Perl/lib/Unicode/String.pm line 213.
    [Mon Jan  8 20:51:54 2007] index.pl: Uneven UTF16 data at G:/Program Files/Perl/lib/Unicode/String.pm line 196.
    Ma chaine utf-8 est en utf-8 strict, donc je ne comprend pas trop quel est le problème
    Everybody have in their the potential to be their own god : Marilyn Manson

  2. #2
    Membre actif Avatar de mobscene
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 331
    Points : 234
    Points
    234
    Par défaut
    après re lecture de la doc du module sur CPAN il semble que j'ai un problème de byteswap(), il me faut utiliser byteswap2( $str, ... ) le problème c'est que je vois pas quoi mettre dedans

    merci de votre aide parce que la je suis un peu beaucoup largué
    Everybody have in their the potential to be their own god : Marilyn Manson

  3. #3
    Membre actif Avatar de mobscene
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 331
    Points : 234
    Points
    234
    Par défaut
    Bon après avoir fait un tour dans les snippets j'ai compris mon erreur pour convertire de utf8 a utf16le il faut utiliser Unicode::String comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    use Unicode::String qw(utf8 utf16le);
    Unicode::String->stringify_as('utf16le');
     
    $var = utf8($var);
    vala le snippets :
    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
    26
    27
    28
    29
    30
     
    #!/usr/bin/perl -w
     
    use strict; 
    use Unicode::String;
     
    ###########################################
    #
    #	2UTF8.pl
    #	________
    #
    #Pour la conversion de fichiers ISO-8859-1
    #vers UTF-8
    #INPUT : un fichier ASCII ISO-8859-1
    #OUTPUT : un fichier ASCII UTF-8
    ###########################################
     
    Unicode::String->stringify_as('utf8');
    my($file) = $ARGV[0];
    my($file_dest) = $file.".new";
    open FILE, "< $file" or die "$!\n";
    open FILE2, "> $file_dest" or die "$!\n";
    while(<FILE>){
    	$_ = Unicode::String::latin1($_);
    	print FILE2 $_;
    }
    close FILE and close FILE2;
    unlink $file;
    rename($file_dest, $file);
    unlink $file_dest;
    mais voila j'ai un tout dernier soucie , utf8() me dit que mes chaines utf-8 ne sont pas bonne j'utilise pourtant Encode comme sa :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
       unless ( $Charset =~ /utf8|utf-8/i ) {
           if ( $Charset ne "not_found" ) {
             $data->{'_content'} = encode("utf-8-strict", decode($Charset, $data->{'_content'}, Encode::FB_WARN));
           }
             else {
             $data->{'_content'} = encode("utf-8-strict", $data->{'_content'}, Encode::FB_WARN);
           }
       }
    Everybody have in their the potential to be their own god : Marilyn Manson

Discussions similaires

  1. [PHP 5.3] Convertir un fichier de UTF-16 vers UTF-8
    Par alainyvan dans le forum Langage
    Réponses: 2
    Dernier message: 09/06/2014, 20h52
  2. [WD17] Conversion d'un fichier plat encoder en UTF-16LE vers UTF-8
    Par nokwih dans le forum WinDev
    Réponses: 1
    Dernier message: 21/05/2013, 10h47
  3. Réponses: 1
    Dernier message: 05/12/2006, 16h54
  4. conversion iso-8859-1 vers utf-8
    Par gorgonite dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/08/2006, 12h49
  5. Conversion vers UTF-8
    Par magnus2005 dans le forum Langage
    Réponses: 1
    Dernier message: 26/10/2005, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo