Excel 如何在使用AppleScript重命名文件时保留特殊字符
我有一个AppleScript文件来替换通过CSV文件提供的文件名。虽然我已经让脚本工作,但它在字符串/文件名的编码方面存在问题 文件的查找非常有效。将其重命名为类似Malmö的名称会产生一个非常奇怪的编码字符串 CSV源于Microsoft Excel,我怀疑它的UTF-8编码不正确。现在我陷入了如何正确处理编码的困境。(或如何转换编码)。据我所知,它有默认的Excel编码ISO 8859-1Excel 如何在使用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
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并从那里获得它,那么所有字符都应该是很好的(我使用æå,它永远不会失败)。