Si j'écris un fichier texte en utilisant les standardadditions, je peux évidemment configurer l'encodage dans un sac de paramètres. En AppleScript j'écrirais «class utf8» mais quelle valeur utiliser dans JXA? J'ai essayé les cordes "UTF8", "utf8", "classe utf8" sans succès. L'erreur est toujours: "Erreur: Impossible de convertir les types. (-1700)". Si j'utilise "text" le fichier est écrit en MACROMAN.JXA: Définir l'encodage UTF-8 lors de l'écriture de fichiers
exemple autonome ci-dessous:
var exportFileWriter = fileWriter('/Users/norman/mini.txt');
exportFileWriter.write('äöü');
exportFileWriter.close();
function fileWriter(pathAsString) {
'use strict';
var app = Application.currentApplication();
app.includeStandardAdditions = true;
var path = Path(pathAsString);
var file = app.openForAccess(path, {writePermission: true});
/* reset file length */
app.setEof(file, {to: 0});
return {
write: function(content) {
/* How can I write UTF-8? */
app.write(content, {to: file, as: 'text'});
},
close: function() {
app.closeAccess(file);
}
};
}
addition après la réponse de foo:
Je lis les paragraphes pertinents dans la documentation https://developer.apple.com/library/mac/releasenotes/InterapplicationCommunication/RN-JavaScriptForAutomation/index.html#//apple_ref/doc/uid/TP40014508-CH109-SW17
et
à utiliser la Pont ObjectiveC à la place. Cet exemple fonctionne
str = $.NSString.alloc.initWithUTF8String('foo')
str.writeToFileAtomically('/tmp/foo', true)
Si je comprends bien, l'exemple suivant devrait fonctionner, en raison de la convention comment ObjectiveC méthodes sont nommés dans le pont (retirer deux points, ajouter camelcase), mais il ne fonctionne pas. Aucun fichier n'a été écrit et la valeur de retour est false.
str = $.NSString.alloc.initWithUTF8String('foo')
str.writeToFileAtomicallyEncodingError('/tmp/foo', true, 'UTF-8', null);
Qu'est-ce que j'ai fait de mal? Je ne sais même pas comment passer un Errorhandler correct comme 4ème paramètre et si le 3ème param a la bonne valeur.
Nous vous remercions de votre participation. J'ai lu de la documentation, édité ma question et ajouté quelques exemples minimaux. – nwehrle