怎么使用用于Mac Automation的JavaScript编写UTF-8文件?

本教程将介绍如何使用用于Mac Automation的JavaScript编写UTF-8文件?的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

问题描述

简而言之-什么是适用于Mac Automation的JavaScript,相当于AppleScript的as «class utf8»

我正尝试使用JavaScript for Mac Automation将Unicode字符串写入文本文件。

将字符串写入文件时,文件中出现的任何Unicode字符都会变成问号(ASCII字符3F)。

如果这是一个AppleScript脚本而不是JavaScript脚本,我可以通过添加as «class utf8»raw语句来解决这个问题,如吉田隆的博客(https://takashiyoshida.org/blog/applescript-write-text-as-utf8-string-to-file/)所述。

但是,该脚本已经用JavaScript编写,所以我正在寻找与此AppleScript语句等效的JavaScript。Apple关于RAW语句的页面仅涉及AppleScript(https://developer.apple.com/library/content/documentation/AppleScript/Conceptual/AppleScriptLangGuide/conceptual/ASLR_raw_data.html)。

要编写该文件,我使用的是Apple自己的writeTextToFileJavaScript函数示例(https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/ReadandWriteFiles.html#//apple_ref/doc/uid/TP40016239-CH58-SW1)。根据StandardAdditions字典,我向以下调用添加了as参数:

// Write the new content to the file
app.write(text, { to: openedFile, startingAt: app.getEof(openedFile), as: "utf8" })

并尝试了以下所有字符串(按书写形式,也使用小写形式):

    Unicode文本

    Unicode

    UTF8类

    «类UTF8»

    UTF8

    文本

    UTF8文本

除了”text”(这会导致相同的问号情况)之外,使用上述所有字符串都会生成一个零字节文件。

我知道我在这里可能涉入了未知的水域,但如果有谁以前读过这篇文章,并愿意提供一些提示,我将非常感激?

推荐答案

如果您想确保您的文件是用UTF8编码编写的,请使用NSString的writeToFile:atomically:encoding:error函数,如下所示:

fileStr = $.NSString.alloc.initWithUTF8String( 'your string here' )
fileStr.writeToFileAtomicallyEncodingError( filePath, true, $.NSUTF8StringEncoding, $() )

您可能认为编写从UTF8字符串初始化的NSString对象会写出为UTF8,但我根据经验发现writeToFile:atomically不支持正在写出的字符串的编码。writeToFile:atomically:encoding:error显式指定要使用的编码。最重要的是,从OSX 10.4开始,writeToFile:atomically就被苹果弃用了。

好了关于怎么使用用于Mac Automation的JavaScript编写UTF-8文件?的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。

0
没有账号?注册  忘记密码?