J'utilise Perl pour lire les fichiers UTF-16LE dans Windows 7.Pourquoi lire dans fichier UTF-16LE ne convertira pas " r n" Dans " n" Dans Windows
Si je lis dans un fichier ASCII avec le code suivant alors chaque "\ r \ n" dans le fichier sera converti en un "\ n" en mémoire:
open CUR_FILE, "<", $asciiFile;
Si je lis dans un UTF-16LE (windows 1200) fichier avec le code suivant , cette incohérence provoque des problèmes lorsque j'essaie d'écrire des lignes avec des sauts de ligne.
open CUR_FILE, "<:encoding(UTF-16LE)", $utf16leFile;
Ensuite, "\ r \ n" restera inchangé.
Mise à jour:
Pour chaque ligne d'un fichier UTF-16LE:
line =~ /(.*)$/
Ensuite, la chaîne correspond à 1 $ comprendra un "\ r" à la fin ...
Cela ressemble à un bug pour moi. Autant que je m'en souvienne, Perl est censé garantir que '\ n' fonctionne pour une correspondance de nouvelle ligne pour les choses codées en interne. Définitivement pour d'autres encodages sur Windows. –
Quelle version de Perl utilisez-vous? Si ce n'est pas 5.10.1 (ou 5.12.RCn), alors pouvez-vous passer à une version plus récente? –
J'utilisais 5.10.0, mais après la mise à niveau vers la version 5.10.1, le problème persiste (Windows 64bit) –