我有一个AppleScript文件来替换通过CSV文件提供的文件名。虽然我已经让脚本工作,但它在编码字符串/文件名方面存在问题。
文件的发现完美无缺。将其重命名为Malmö之类的结果会产生一个非常奇怪的编码字符串。
CSV源自Microsoft Excel,我怀疑没有正确的UTF-8编码。现在我陷入了如何正确处理编码的困境。 (或如何转换编码)。据我所知,它具有默认的Excel编码ISO 8859-1。
set theFile to (choose file with prompt "Select the CSV file")
set thePath to (choose folder with prompt "Select directory") as string
set theCSVData to paragraphs of ((read theFile))
set {oldTID, my text item delimiters} to {my text item delimiters, ";"}
repeat with thisLine in theCSVData
set {oldFileName, newFileName} to text items of thisLine
if length of oldFileName > 0 then
set oldFile to thePath & oldFileName
set newFile to newFileName
tell application "System Events"
if exists file oldFile then
set name of file oldFile to newFile
end if
end tell
end if
end repeat
所以我的问题是,如何通过正确读取或首先编码文件(通过applescript)来修复编码问题
答案 0 :(得分:0)
我真的认为文件名是使用utf16LE编码的,但我可能错了。无论如何,你可以通过终端访问一个名为 iconv (man iconv)的实用程序,你可以试验,也许可以重新编码文件名。如果您收到来自do shell script
的文本输出或unicode文本,那么您将返回utf16,因此转换后它不会被破坏。 (在将其用作文件名之前)。
答案 1 :(得分:0)
使用:
set theCSVData to paragraphs of ((read theFile as «class utf8»))