MickyD Posté(e) le 24 juillet 2012 Posté(e) le 24 juillet 2012 Bonjour à tous et encore bravo pour toutes vos réponses qui nous aident beaucoup. Pourriez-vous m'aider à finaliser une application qui doit me permettre d'écrire un fichier au format GML. Je n'ai aucun problème pour programmer en autolisp, la création de ce fichier mais là où je sèche, c'est au niveau des caractères accentués. Il faudrait que mon fichier soit encodé en UTF-8.Comment faut-il faire en autolisp ou vlisp pour encoder un fichier écrit en ANSI?Merci d'avance pour l'aide que vous pourriez m'apporter.
(gile) Posté(e) le 25 juillet 2012 Posté(e) le 25 juillet 2012 Salut, Tu peux essayer ces routines: ;; gc:WriteStream ;; Ecrit un texte dans un fichier suivant l'encodage de caractère spécifié ;; Retourne le chemin du fichier ou nil si l'opération a échoué. ;; ;; Arguments ;; text : le texte à écrire ;; filename : le chemin du ficher ;; charset : le système d'encodage (exemples : "iso-8859-1" (ascii/ANSI), "utf-8", "unicode") (defun gc:WriteStream (text filename charset / stream result) (vl-load-com) (if (setq stream (vlax-create-object "ADODB.Stream")) (progn (setq result (vl-catch-all-apply (function (lambda () (vlax-put stream 'Charset charset) (vlax-invoke stream 'Open) (vlax-invoke stream 'WriteText text 0) (vlax-invoke stream 'SaveToFile filename 2) (vlax-invoke stream 'Close) ) ) ) ) (vlax-release-object stream) (if (not (vl-catch-all-error-p result)) filename ) ) ) ) ;; gc:ReadStream ;; Lit un texte dans un fichier suivant l'encodage de caractère spécifié ;; Retourne le contenu du fichier ou nil si l'opération a échoué. ;; ;; Arguments ;; filename : le chemin du ficher ;; charset : le système d'encodage (exemples : "iso-8859-1" (ascii/ANSI), "utf-8", "unicode") (defun gc:ReadStream (filename charset / stream retval) (vl-load-com) (if (and (setq filename (findfile filename)) (setq stream (vlax-create-object "ADODB.Stream")) ) (progn (vl-catch-all-apply (function (lambda () (vlax-put stream 'Charset charset) (vlax-invoke stream 'Open) (vlax-invoke stream 'LoadFromFile filename) (setq retval (vlax-invoke stream 'ReadText -1)) (vlax-invoke stream 'Close) ) ) ) (vlax-release-object stream) retval ) ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
rebcao Posté(e) le 26 novembre 2014 Posté(e) le 26 novembre 2014 Bonsoir Gilles, Y a un truc qui m'échappe ! Le source, c'est bien un LISP ? Une fois chargé, je tape quelle commande ? Je te remercie. Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
(gile) Posté(e) le 26 novembre 2014 Posté(e) le 26 novembre 2014 Salut, Il ne s'agit pas de commandes, mais de fonctions LISP définies avec (defun ...) qui sont à utiliser comme les fonctions LISP natives.Ces fonctions requièrent des arguments comme décrit dans les commentaires de l'en-tête. Exemple d'utilisation : Ecrire "En-tête à lire méticuleusement" dans un fichier avec l'encodage UTF-8(gc:WriteStream "En-tête à lire méticuleusement" "C:\\Temp\\Test.txt" "utf-8") Lire le fichier en utilisant l'encodage unicode(gc:ReadStream "C:\\Temp\\Test.txt" "unicode") retourne "??????????????????" Lire le fichier en utilisant l'encodage ascii/ANSI(gc:ReadStream "C:\\Temp\\Test.txt" "iso-8859-1") retourne "En-tête à lire méticuleusement" Lire le fichier en utilisant l'encodage UTF-8(gc:ReadStream "C:\\Temp\\Test.txt" "utf-8") retourne "En-tête à lire méticuleusement" AutoLISP utilise l'encodage ascii/ANSI((lambda (file / line) (setq line (read-line file)) (close file) line ) (open "C:\\Temp\\Test.txt" "r") )retourne "En-tête à lire méticuleusement" Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
rebcao Posté(e) le 26 novembre 2014 Posté(e) le 26 novembre 2014 Bonsoir, Effectivement, ça méritait quelques précisions... Merci Gilles. Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant