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

Excel 如何在使用AppleScript重命名文件时保留特殊字符,excel,encoding,applescript,filenames,Excel,Encoding,Applescript,Filenames,我有一个AppleScript文件来替换通过CSV文件提供的文件名。虽然我已经让脚本工作,但它在字符串/文件名的编码方面存在问题 文件的查找非常有效。将其重命名为类似Malmö的名称会产生一个非常奇怪的编码字符串 CSV源于Microsoft Excel,我怀疑它的UTF-8编码不正确。现在我陷入了如何正确处理编码的困境。(或如何转换编码)。据我所知,它有默认的Excel编码ISO 8859-1 set theFile to (choose file with prompt "Select th

我有一个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)

我真的认为文件名是使用utf16LE编码的,但我可能是错的。无论如何,您可以通过终端访问一个名为iconv(man-iconv>)的实用程序,您可以尝试使用它,也可以使用它对文件名进行重新编码。如果您以文本或unicode文本形式接收来自
do shell脚本的输出,那么您将返回utf16,这样在转换后它就不会损坏。(在将其用作文件名之前)。

使用:

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

恐怕这会导致完全相同的变形字符串。如
J‰rf‰lla
Malmˆ
确保CSV也保存为UTF8。如果只能保存在ISO8859-1中,在终端中运行
iconv-f ISO8859-1-t UTF8'/path/to/file.csv'>'/path/to/file-UTF8.csv'
首先将其转换为UTF8编码。hmm将文件转换为0字节文件尝试以下操作:
iconv-f ISO-8859-1-t UTF-8'/path/to/file.csv'>'/path/to/file-UTF8.csv'
我已稍微更改了编码参数,你能给我举个例子,如何将CSV文件从
utf16LE
转换为
utf-8
?或者如何使用applescript转换从中获取的字符串?我对它们不是很熟悉,我的意思是磁盘上的hfs文件名是用utf16Le编码的。我想foo已经给了你一个完整而正确的答案,我的意思是,(或者更正确,因为我正在考虑通过iconv一个接一个地对文件名进行编码。)现在,如果你将csv转换为utf-8并从那里获得它,那么所有字符都应该是很好的(我使用æå,它永远不会失败)。