使用AppleScript重命名文件时如何保留特殊字符

时间:2015-05-27 16:29:00

标签: excel encoding applescript filenames

我有一个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)来修复编码问题

2 个答案:

答案 0 :(得分:0)

我真的认为文​​件名是使用utf16LE编码的,但我可能错了。无论如何,你可以通过终端访问一个名为 iconv (man iconv)的实用程序,你可以试验,也许可以重新编码文件名。如果您收到来自do shell script的文本输出或unicode文本,那么您将返回utf16,因此转换后它不会被破坏。 (在将其用作文件名之前)。

答案 1 :(得分:0)

使用:

set theCSVData to paragraphs of ((read theFile as «class utf8»))