Comment convertir un fichier texte encodé en UNICODE vers de l'ASCII pour le
lire/traiter correctement dans un script Perl ?
J'ai regardé la doc, la fonction pack() je n'y comprends rien (et pourtant
je m'acharne !), j'ai regardé aussi du côté des modules sur cpan, rien de
concluant.
La fonction open() me dit que je peux mettre des filtres de lecture, mais
cela me retourne une jolie erreur quand je tente par exemple de faire un
open(file,":utf8","monfichier.txt");
On Wed, 13 Jul 2005 15:20:45 +0200, Yoann Wyffels wrote:
Comment convertir un fichier texte encodé en UNICODE
Unicode c'est large... UTF-8, UCS-2, UCS-4? Pour les deux derniers, avec des octets dans quel ordre?
vers de l'ASCII pour le lire/traiter correctement dans un script Perl ?
Perl 5.8 gère parfaitement Unicode en natif, à condition qu'il soit au courant que ce qu'on lui donne en est, et à quel format il est.
La fonction open() me dit que je peux mettre des filtres de lecture, mais cela me retourne une jolie erreur quand je tente par exemple de faire un open(file,":utf8","monfichier.txt");
Avec "<:utf8" ça devrait nettement mieux marcher, si le fichier est bien en UTF-8 bien sûr.
Comment convertir un fichier texte encodé en UNICODE
Unicode c'est large... UTF-8, UCS-2, UCS-4? Pour les deux derniers, avec
des octets dans quel ordre?
vers de l'ASCII pour le lire/traiter correctement dans un script Perl ?
Perl 5.8 gère parfaitement Unicode en natif, à condition qu'il soit au
courant que ce qu'on lui donne en est, et à quel format il est.
La fonction open() me dit que je peux mettre des filtres de lecture, mais
cela me retourne une jolie erreur quand je tente par exemple de faire un
open(file,":utf8","monfichier.txt");
Avec "<:utf8" ça devrait nettement mieux marcher, si le fichier est bien
en UTF-8 bien sûr.
On Wed, 13 Jul 2005 15:20:45 +0200, Yoann Wyffels wrote:
Comment convertir un fichier texte encodé en UNICODE
Unicode c'est large... UTF-8, UCS-2, UCS-4? Pour les deux derniers, avec des octets dans quel ordre?
vers de l'ASCII pour le lire/traiter correctement dans un script Perl ?
Perl 5.8 gère parfaitement Unicode en natif, à condition qu'il soit au courant que ce qu'on lui donne en est, et à quel format il est.
La fonction open() me dit que je peux mettre des filtres de lecture, mais cela me retourne une jolie erreur quand je tente par exemple de faire un open(file,":utf8","monfichier.txt");
Avec "<:utf8" ça devrait nettement mieux marcher, si le fichier est bien en UTF-8 bien sûr.
Jacques.
Yoann Wyffels
C'est vrai j'ai manqué de précision. Je suis sour Perl 5.6 (ActiveState), Windows. .
Comment convertir un fichier texte encodé en UNICODE
Unicode c'est large... UTF-8, UCS-2, UCS-4? Pour les deux derniers, avec des octets dans quel ordre?
C'est de l'UTF-8 que je cherche à transformer en ASCII
vers de l'ASCII pour le lire/traiter correctement dans un script Perl ?
Perl 5.8 gère parfaitement Unicode en natif, à condition qu'il soit au courant que ce qu'on lui donne en est, et à quel format il est.
La fonction open() me dit que je peux mettre des filtres de lecture, mais cela me retourne une jolie erreur quand je tente par exemple de faire un open(file,":utf8","monfichier.txt");
Avec "<:utf8" ça devrait nettement mieux marcher, si le fichier est bien en UTF-8 bien sûr.
J'ai déjà essayé cette syntaxe, idem, Perl me dit qu'il ne connaît pas de mode (Unknown open() mode '<:utf8') avec le code suivant: ------------------------------------------------- open(FILE,"<:utf8","export_incident.txt"); while(<FILE>){ print "$_n"; } close(FILE); -------------------------------------------------
Jacques.
C'est vrai j'ai manqué de précision. Je suis sour Perl 5.6 (ActiveState),
Windows.
.
Comment convertir un fichier texte encodé en UNICODE
Unicode c'est large... UTF-8, UCS-2, UCS-4? Pour les deux derniers, avec
des octets dans quel ordre?
C'est de l'UTF-8 que je cherche à transformer en ASCII
vers de l'ASCII pour le lire/traiter correctement dans un script Perl ?
Perl 5.8 gère parfaitement Unicode en natif, à condition qu'il soit au
courant que ce qu'on lui donne en est, et à quel format il est.
La fonction open() me dit que je peux mettre des filtres de lecture, mais
cela me retourne une jolie erreur quand je tente par exemple de faire un
open(file,":utf8","monfichier.txt");
Avec "<:utf8" ça devrait nettement mieux marcher, si le fichier est bien
en UTF-8 bien sûr.
J'ai déjà essayé cette syntaxe, idem, Perl me dit qu'il ne connaît pas de
mode (Unknown open() mode '<:utf8')
avec le code suivant:
-------------------------------------------------
open(FILE,"<:utf8","export_incident.txt");
while(<FILE>){
print "$_n";
}
close(FILE);
-------------------------------------------------
C'est vrai j'ai manqué de précision. Je suis sour Perl 5.6 (ActiveState), Windows. .
Comment convertir un fichier texte encodé en UNICODE
Unicode c'est large... UTF-8, UCS-2, UCS-4? Pour les deux derniers, avec des octets dans quel ordre?
C'est de l'UTF-8 que je cherche à transformer en ASCII
vers de l'ASCII pour le lire/traiter correctement dans un script Perl ?
Perl 5.8 gère parfaitement Unicode en natif, à condition qu'il soit au courant que ce qu'on lui donne en est, et à quel format il est.
La fonction open() me dit que je peux mettre des filtres de lecture, mais cela me retourne une jolie erreur quand je tente par exemple de faire un open(file,":utf8","monfichier.txt");
Avec "<:utf8" ça devrait nettement mieux marcher, si le fichier est bien en UTF-8 bien sûr.
J'ai déjà essayé cette syntaxe, idem, Perl me dit qu'il ne connaît pas de mode (Unknown open() mode '<:utf8') avec le code suivant: ------------------------------------------------- open(FILE,"<:utf8","export_incident.txt"); while(<FILE>){ print "$_n"; } close(FILE); -------------------------------------------------
La fonction open() me dit que je peux mettre des filtres de lecture, mais cela me retourne une jolie erreur quand je tente par exemple de faire un open(file,":utf8","monfichier.txt");
Avec "<:utf8" ça devrait nettement mieux marcher, si le fichier est bien en UTF-8 bien sûr.
Et pour le PO (Posteur Original), plutôt que de nous donner votre avis sur les qualités esthétiques d'une erreur (jolie erreur !), recopiez donc le message d'erreur exact... Ça aide à aider ! Et ça peut au passage vous amenez à relire la doc car souvent le message est assez explicite. L'utilisation de 'use diagnostics' peut aussi aider.
La fonction open() me dit que je peux mettre des filtres de lecture, mais
cela me retourne une jolie erreur quand je tente par exemple de faire un
open(file,":utf8","monfichier.txt");
Avec "<:utf8" ça devrait nettement mieux marcher, si le fichier est
bien en UTF-8 bien sûr.
Et pour le PO (Posteur Original), plutôt que de nous donner votre avis
sur les qualités esthétiques d'une erreur (jolie erreur !), recopiez
donc le message d'erreur exact... Ça aide à aider ! Et ça peut au
passage vous amenez à relire la doc car souvent le message est assez
explicite. L'utilisation de 'use diagnostics' peut aussi aider.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
La fonction open() me dit que je peux mettre des filtres de lecture, mais cela me retourne une jolie erreur quand je tente par exemple de faire un open(file,":utf8","monfichier.txt");
Avec "<:utf8" ça devrait nettement mieux marcher, si le fichier est bien en UTF-8 bien sûr.
Et pour le PO (Posteur Original), plutôt que de nous donner votre avis sur les qualités esthétiques d'une erreur (jolie erreur !), recopiez donc le message d'erreur exact... Ça aide à aider ! Et ça peut au passage vous amenez à relire la doc car souvent le message est assez explicite. L'utilisation de 'use diagnostics' peut aussi aider.
C'est vrai j'ai manqué de précision. Je suis sour Perl 5.6 (ActiveState), Windows.
Unicode c'est large... UTF-8, UCS-2, UCS-4? Pour les deux derniers, avec des octets dans quel ordre?
C'est de l'UTF-8 que je cherche à transformer en ASCII
Perl 5.8 gère parfaitement Unicode en natif, à condition qu'il soit au courant que ce qu'on lui donne en est, et à quel format il est.
Et c'est sans doute là qu'est votre problème (plus bas) : vous utilisez Perl 5.6 :-)
J'ai déjà essayé cette syntaxe, idem, Perl me dit qu'il ne connaît pas de mode (Unknown open() mode '<:utf8') avec le code suivant: ------------------------------------------------- open(FILE,"<:utf8","export_incident.txt"); while(<FILE>){ print "$_n"; } close(FILE); -------------------------------------------------
-- "Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce que je veux !" "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." (Bill Gates, The Road Ahead)
C'est vrai j'ai manqué de précision. Je suis sour Perl 5.6 (ActiveState),
Windows.
Unicode c'est large... UTF-8, UCS-2, UCS-4? Pour les deux derniers, avec
des octets dans quel ordre?
C'est de l'UTF-8 que je cherche à transformer en ASCII
Perl 5.8 gère parfaitement Unicode en natif, à condition qu'il soit au
courant que ce qu'on lui donne en est, et à quel format il est.
Et c'est sans doute là qu'est votre problème (plus bas) : vous utilisez
Perl 5.6 :-)
J'ai déjà essayé cette syntaxe, idem, Perl me dit qu'il ne connaît pas de
mode (Unknown open() mode '<:utf8')
avec le code suivant:
-------------------------------------------------
open(FILE,"<:utf8","export_incident.txt");
while(<FILE>){
print "$_n";
}
close(FILE);
-------------------------------------------------
--
"Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce
que je veux !"
"The obvious mathematical breakthrough would be development of an easy
way to factor large prime numbers." (Bill Gates, The Road Ahead)
C'est vrai j'ai manqué de précision. Je suis sour Perl 5.6 (ActiveState), Windows.
Unicode c'est large... UTF-8, UCS-2, UCS-4? Pour les deux derniers, avec des octets dans quel ordre?
C'est de l'UTF-8 que je cherche à transformer en ASCII
Perl 5.8 gère parfaitement Unicode en natif, à condition qu'il soit au courant que ce qu'on lui donne en est, et à quel format il est.
Et c'est sans doute là qu'est votre problème (plus bas) : vous utilisez Perl 5.6 :-)
J'ai déjà essayé cette syntaxe, idem, Perl me dit qu'il ne connaît pas de mode (Unknown open() mode '<:utf8') avec le code suivant: ------------------------------------------------- open(FILE,"<:utf8","export_incident.txt"); while(<FILE>){ print "$_n"; } close(FILE); -------------------------------------------------
-- "Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce que je veux !" "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." (Bill Gates, The Road Ahead)
Michel Rodriguez
Yoann Wyffels wrote:
Comment convertir un fichier texte encodé en UNICODE vers de l'ASCII pour le lire/traiter correctement dans un script Perl ?
On ne peut pas. L'ASCII a un jeu de 127 characteres, et l'unicode couvre quelques millions...
Maintenant si ton probleme est de convertir du texte en UTF-8 ne contenant que des characteres accentues francais vers de l'ISO-8859-1 (ou -15), alors en 5.6.* tu peux utiliser Text::Iconv (si tu as iconv) installe, ou Unicode::Map8 et Unicode::Strings (de memoire).
-- mirod
Yoann Wyffels wrote:
Comment convertir un fichier texte encodé en UNICODE vers de l'ASCII pour le
lire/traiter correctement dans un script Perl ?
On ne peut pas. L'ASCII a un jeu de 127 characteres, et l'unicode couvre
quelques millions...
Maintenant si ton probleme est de convertir du texte en UTF-8 ne
contenant que des characteres accentues francais vers de l'ISO-8859-1
(ou -15), alors en 5.6.* tu peux utiliser Text::Iconv (si tu as iconv)
installe, ou Unicode::Map8 et Unicode::Strings (de memoire).
Comment convertir un fichier texte encodé en UNICODE vers de l'ASCII pour le lire/traiter correctement dans un script Perl ?
On ne peut pas. L'ASCII a un jeu de 127 characteres, et l'unicode couvre quelques millions...
Maintenant si ton probleme est de convertir du texte en UTF-8 ne contenant que des characteres accentues francais vers de l'ISO-8859-1 (ou -15), alors en 5.6.* tu peux utiliser Text::Iconv (si tu as iconv) installe, ou Unicode::Map8 et Unicode::Strings (de memoire).
La fonction open() me dit que je peux mettre des filtres de lecture, mais cela me retourne une jolie erreur quand je tente par exemple de faire un open(file,":utf8","monfichier.txt");
Avec "<:utf8" ça devrait nettement mieux marcher, si le fichier est bien en UTF-8 bien sûr.
J'ai déjà essayé cette syntaxe, idem, Perl me dit qu'il ne connaît pas de mode (Unknown open() mode '<:utf8')
Il vaut mieux lire la documentation liée à la distribution qu'on utilise ! Utilisez donc le script 'perldoc' fourni :
perldoc -f open
Et là, nulle mention d'un éventuel filtre ':utf8'... Votre distribution est trop ancienne.
La fonction open() me dit que je peux mettre des filtres de lecture, mais
cela me retourne une jolie erreur quand je tente par exemple de faire un
open(file,":utf8","monfichier.txt");
Avec "<:utf8" ça devrait nettement mieux marcher, si le fichier est bien
en UTF-8 bien sûr.
J'ai déjà essayé cette syntaxe, idem, Perl me dit qu'il ne connaît pas de
mode (Unknown open() mode '<:utf8')
Il vaut mieux lire la documentation liée à la distribution qu'on
utilise ! Utilisez donc le script 'perldoc' fourni :
perldoc -f open
Et là, nulle mention d'un éventuel filtre ':utf8'... Votre
distribution est trop ancienne.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
La fonction open() me dit que je peux mettre des filtres de lecture, mais cela me retourne une jolie erreur quand je tente par exemple de faire un open(file,":utf8","monfichier.txt");
Avec "<:utf8" ça devrait nettement mieux marcher, si le fichier est bien en UTF-8 bien sûr.
J'ai déjà essayé cette syntaxe, idem, Perl me dit qu'il ne connaît pas de mode (Unknown open() mode '<:utf8')
Il vaut mieux lire la documentation liée à la distribution qu'on utilise ! Utilisez donc le script 'perldoc' fourni :
perldoc -f open
Et là, nulle mention d'un éventuel filtre ':utf8'... Votre distribution est trop ancienne.
La fonction open() me dit que je peux mettre des filtres de lecture, mais cela me retourne une jolie erreur quand je tente par exemple de faire un open(file,":utf8","monfichier.txt");
Avec "<:utf8" ça devrait nettement mieux marcher, si le fichier est bien en UTF-8 bien sûr.
Et pour le PO (Posteur Original), plutôt que de nous donner votre avis sur les qualités esthétiques d'une erreur (jolie erreur !), recopiez donc le message d'erreur exact... Ça aide à aider ! Et ça peut au passage vous amenez à relire la doc car souvent le message est assez explicite. L'utilisation de 'use diagnostics' peut aussi aider.
Bonjour Paul,
C'est que ce que j'ai fait par la suite, en disant qu'effectivement,je n'avais pas été précis sur ce coup là...:)
La fonction open() me dit que je peux mettre des filtres de lecture,
mais
cela me retourne une jolie erreur quand je tente par exemple de faire un
open(file,":utf8","monfichier.txt");
Avec "<:utf8" ça devrait nettement mieux marcher, si le fichier est
bien en UTF-8 bien sûr.
Et pour le PO (Posteur Original), plutôt que de nous donner votre avis
sur les qualités esthétiques d'une erreur (jolie erreur !), recopiez
donc le message d'erreur exact... Ça aide à aider ! Et ça peut au
passage vous amenez à relire la doc car souvent le message est assez
explicite. L'utilisation de 'use diagnostics' peut aussi aider.
Bonjour Paul,
C'est que ce que j'ai fait par la suite, en disant qu'effectivement,je
n'avais pas été précis sur ce coup là...:)
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
La fonction open() me dit que je peux mettre des filtres de lecture, mais cela me retourne une jolie erreur quand je tente par exemple de faire un open(file,":utf8","monfichier.txt");
Avec "<:utf8" ça devrait nettement mieux marcher, si le fichier est bien en UTF-8 bien sûr.
Et pour le PO (Posteur Original), plutôt que de nous donner votre avis sur les qualités esthétiques d'une erreur (jolie erreur !), recopiez donc le message d'erreur exact... Ça aide à aider ! Et ça peut au passage vous amenez à relire la doc car souvent le message est assez explicite. L'utilisation de 'use diagnostics' peut aussi aider.
Bonjour Paul,
C'est que ce que j'ai fait par la suite, en disant qu'effectivement,je n'avais pas été précis sur ce coup là...:)
"Michel Rodriguez" a écrit dans le message de news: 42d523c9$0$320$
Yoann Wyffels wrote:
Comment convertir un fichier texte encodé en UNICODE vers de l'ASCII pour le lire/traiter correctement dans un script Perl ?
On ne peut pas. L'ASCII a un jeu de 127 characteres, et l'unicode couvre quelques millions...
Maintenant si ton probleme est de convertir du texte en UTF-8 ne contenant que des characteres accentues francais vers de l'ISO-8859-1 (ou -15), alors en 5.6.* tu peux utiliser Text::Iconv (si tu as iconv) installe, ou Unicode::Map8 et Unicode::Strings (de memoire).
-- mirod
Merci Michel pour ta réponse constructive, je vais essayé tout ça. Je dois t'avouer être un peu perdu dans le monde des jeux de caractères, merci de m'avoir aiguiller sur les bons termes.
"Michel Rodriguez" <mirod@mirod.org> a écrit dans le message de news:
42d523c9$0$320$5fc30a8@news.tiscali.it...
Yoann Wyffels wrote:
Comment convertir un fichier texte encodé en UNICODE vers de l'ASCII pour
le lire/traiter correctement dans un script Perl ?
On ne peut pas. L'ASCII a un jeu de 127 characteres, et l'unicode couvre
quelques millions...
Maintenant si ton probleme est de convertir du texte en UTF-8 ne contenant
que des characteres accentues francais vers de l'ISO-8859-1 (ou -15),
alors en 5.6.* tu peux utiliser Text::Iconv (si tu as iconv) installe, ou
Unicode::Map8 et Unicode::Strings (de memoire).
--
mirod
Merci Michel pour ta réponse constructive, je vais essayé tout ça. Je dois
t'avouer être un peu perdu dans le monde des jeux de caractères, merci de
m'avoir aiguiller sur les bons termes.
"Michel Rodriguez" a écrit dans le message de news: 42d523c9$0$320$
Yoann Wyffels wrote:
Comment convertir un fichier texte encodé en UNICODE vers de l'ASCII pour le lire/traiter correctement dans un script Perl ?
On ne peut pas. L'ASCII a un jeu de 127 characteres, et l'unicode couvre quelques millions...
Maintenant si ton probleme est de convertir du texte en UTF-8 ne contenant que des characteres accentues francais vers de l'ISO-8859-1 (ou -15), alors en 5.6.* tu peux utiliser Text::Iconv (si tu as iconv) installe, ou Unicode::Map8 et Unicode::Strings (de memoire).
-- mirod
Merci Michel pour ta réponse constructive, je vais essayé tout ça. Je dois t'avouer être un peu perdu dans le monde des jeux de caractères, merci de m'avoir aiguiller sur les bons termes.
Jacques Caron
Salut,
On Wed, 13 Jul 2005 16:10:56 +0200, Yoann Wyffels wrote:
C'est de l'UTF-8 que je cherche à transformer en ASCII
En ASCII strict il manque tout un tas de caractères qui sont présents dans votre texte UTF-8 (sinon UTF-8 == ASCII pour tous les caractères ASCII).
Ce que vous cherchez c'est soit à manipuler de l'UTF-8 avec perl, soit à convertir l'UTF-8 dans un charset 8 bits comme ISO-8859-1 (aka ISO Latin 1).
La meilleure solution est probablement d'utiliser perl 5.8, mais à défaut vous pouvez regarder du côté de Unicode::MapUTF8.
On Wed, 13 Jul 2005 16:10:56 +0200, Yoann Wyffels wrote:
C'est de l'UTF-8 que je cherche à transformer en ASCII
En ASCII strict il manque tout un tas de caractères qui sont présents dans votre texte UTF-8 (sinon UTF-8 == ASCII pour tous les caractères ASCII).
Ce que vous cherchez c'est soit à manipuler de l'UTF-8 avec perl, soit à convertir l'UTF-8 dans un charset 8 bits comme ISO-8859-1 (aka ISO Latin 1).
La meilleure solution est probablement d'utiliser perl 5.8, mais à défaut vous pouvez regarder du côté de Unicode::MapUTF8.
Jacques.
Yoann Wyffels
"Michel Rodriguez" a écrit dans le message de news: 42d523c9$0$320$
Yoann Wyffels wrote:
Comment convertir un fichier texte encodé en UNICODE vers de l'ASCII pour le lire/traiter correctement dans un script Perl ?
On ne peut pas. L'ASCII a un jeu de 127 characteres, et l'unicode couvre quelques millions...
Maintenant si ton probleme est de convertir du texte en UTF-8 ne contenant que des characteres accentues francais vers de l'ISO-8859-1 (ou -15), alors en 5.6.* tu peux utiliser Text::Iconv (si tu as iconv) installe, ou Unicode::Map8 et Unicode::Strings (de memoire).
-- mirod
Bout de code qui fonctionne: ------------------------------------------ use Unicode::String qw(latin1 utf16);
$test=latin1($test); ------------------------------------------ Pour info, le fichier export_incident.txt provient de l'outil d'extraction fourni avec SQL Server.
Encore merci Michel pour ton aide.
"Michel Rodriguez" <mirod@mirod.org> a écrit dans le message de news:
42d523c9$0$320$5fc30a8@news.tiscali.it...
Yoann Wyffels wrote:
Comment convertir un fichier texte encodé en UNICODE vers de l'ASCII pour
le lire/traiter correctement dans un script Perl ?
On ne peut pas. L'ASCII a un jeu de 127 characteres, et l'unicode couvre
quelques millions...
Maintenant si ton probleme est de convertir du texte en UTF-8 ne contenant
que des characteres accentues francais vers de l'ISO-8859-1 (ou -15),
alors en 5.6.* tu peux utiliser Text::Iconv (si tu as iconv) installe, ou
Unicode::Map8 et Unicode::Strings (de memoire).
--
mirod
Bout de code qui fonctionne:
------------------------------------------
use Unicode::String qw(latin1 utf16);
$test=latin1($test);
------------------------------------------
Pour info, le fichier export_incident.txt provient de l'outil d'extraction
fourni avec SQL Server.
"Michel Rodriguez" a écrit dans le message de news: 42d523c9$0$320$
Yoann Wyffels wrote:
Comment convertir un fichier texte encodé en UNICODE vers de l'ASCII pour le lire/traiter correctement dans un script Perl ?
On ne peut pas. L'ASCII a un jeu de 127 characteres, et l'unicode couvre quelques millions...
Maintenant si ton probleme est de convertir du texte en UTF-8 ne contenant que des characteres accentues francais vers de l'ISO-8859-1 (ou -15), alors en 5.6.* tu peux utiliser Text::Iconv (si tu as iconv) installe, ou Unicode::Map8 et Unicode::Strings (de memoire).
-- mirod
Bout de code qui fonctionne: ------------------------------------------ use Unicode::String qw(latin1 utf16);
$test=latin1($test); ------------------------------------------ Pour info, le fichier export_incident.txt provient de l'outil d'extraction fourni avec SQL Server.