Aller au contenu

ActiveX et fichier texte en Unicode


Dnegel666

Sujets conseillés

Slt à tous,

Bon mon problème est assez bizarre, je vous l'accorde :

J'ai un .js contenant :

//////////

fichier = "test.txt";

//////////

// define constants
// Note: if a file exists, using forWriting will set
// the contents of the file to zero before writing to
// it.
var forReading = 1, forWriting = 2, forAppending = 8;



// define array to store lines.
rline = new Array();

// Create the object
fs = new ActiveXObject("Scripting.FileSystemObject");
f = fs.GetFile(fichier);

// Open the file
is = f.OpenAsTextStream( forReading, 0 );

// start and continue to read until we hit
// the end of the file.
var count = 0;
while( !is.AtEndOfStream ){
  rline[count] = is.ReadLine();
  count++;
}

// Close the stream
is.Close();

// Place the contents of the array into
// a variable.
var msg = "";
for(i = 0; i < rline.length; i++){
  msg += rline[i] + "\n";
}

// Give the users something to talk about.

WScript.Echo( msg );

number = Math.round(Math.random()*rline.length);

WScript.Echo( number +". "+ rline[number] );

Donc, d'après ce qui est écrit, il doit m'afficher tout le contenu du fichier texte et en plus choisir un nombre au hazard qui correspond à un n° de ligne qu'il doit m'afficher. Jusque là, tout va bien, sauf que mon fichier texte n'est pa enregistrer en ANSI, comme tous les autres... J'ai du l'enregistrer en Unicode, car il contient des caractères compliqué d'autres langues.

Et c'est là que ça coince, parce que avec un fichier en ANSI, je n'est pas de problèmes, il n'y en à seulement quand le format est du Unicode.

je lui demande de m'afficher le fichier, é il m'écrit toujours " 'ÿBf "

Question : Comment lire un fichier texte en unicode avec du activeX ?

Lien vers le commentaire
Partager sur d’autres sites

le pb vient des polices de caractères correspondant aux caractères des autres langues.

Ca n'est pas lié directment à l'objet que tu utilises pour lire le fichier : lui, il ne fait que récupérer qqs chose en entrée, et generer un fluc en sortie.

Faudra surement que tu effectue une table de correspondance pour savoir comment sont coder les caractères spéciaux, et comment ça peut être interprété par ta machine

Lien vers le commentaire
Partager sur d’autres sites

ANSI, Unicode.... Aah la terminologie windows et son non-sens...

Déjà, si tu veux mon avis, plutôt que d'utiliser UTF-16 LE (ce que windows appelle Unicode) tu ferais mieux d'utiliser UTF-8 sans BOM, étant donné qu'UTF-16 n'a aucun intérêt (selon moi), si ce n'est d'apporter des complications.

Ensuite ça dépend si le fichier js est lié à une page web, comment est-il lié, quel est l'encodage fourni pour la page web et le js...

Et que fait exactement WScript.Echo ? C'est la même chose que document.write() ?

Edit: après quelques tests, je n'arrive toujours pas à insérer le texte.

Cela semble être un bug d'Internet Explorer, enfin il est vrai que les problèmatiques d'encodages avec Ecmascript et DOM sont un peu complexes.

Une alternative serait d'utiliser les entités numériques pour spécifier les caractères non ASCII, ou alors convertir les données avec ES lors de l'insertion dans le document.

Modifié par loufoque
Lien vers le commentaire
Partager sur d’autres sites

Non, ce n'est qu'un .js isolé. et même en UTF-8 ou encore l'autre possibilité (UTF-16 big endian,; je crois), il y à qu'en même des erreurs pour les accents...

Mais bon, maintenant, j'ai supprimé ts les accents (snif), et remit en "UTF-16 LE"...

Merci quand même

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...