Se scrivo un file di testo utilizzando le standardadditions, ovviamente posso configurare la codifica in un parametro bag. In AppleScript scriverei «class utf8» ma quale valore usare in JXA? Ho provato le stringhe "UTF8", "utf8", "class utf8" senza successo. L'errore è sempre: "Errore: impossibile convertire i tipi. (-1700)". Se uso "testo" il file è scritto in MACROMAN.JXA: imposta la codifica UTF-8 quando si scrivono i file
esempio Standalone di seguito:
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);
}
};
}
Aggiunta dopo la risposta di foo:
Ho letto i punti rilevanti nella documentazione https://developer.apple.com/library/mac/releasenotes/InterapplicationCommunication/RN-JavaScriptForAutomation/index.html#//apple_ref/doc/uid/TP40014508-CH109-SW17
e
da usare il Invece il bridge ObjectiveC. Questo esempio funziona
str = $.NSString.alloc.initWithUTF8String('foo')
str.writeToFileAtomically('/tmp/foo', true)
Se ho capito bene, l'esempio seguente dovrebbe funzionare, a causa della convenzione come metodi ObjectiveC sono chiamati all'interno del ponte (rimuovere i due punti, aggiungi CamelCase), ma non è così. Nessun file è stato scritto e il valore restituito è falso.
str = $.NSString.alloc.initWithUTF8String('foo')
str.writeToFileAtomicallyEncodingError('/tmp/foo', true, 'UTF-8', null);
Cosa ho sbagliato? Non so nemmeno come passare un Errorhandler corretto come 4 ° parametro e se il 3 ° parametro ha il valore corretto.
Grazie per l'input. Ho letto alcuni documenti, ho modificato la mia domanda e aggiunto alcuni esempi minimi. – nwehrle