为何AppleScript仅读取到指定文件的前两个字符?
问题分析与解决办法
- 核心问题:你读取的
things-commit.db是SQLite数据库二进制文件,不是纯文本格式。用read as «class utf8»读取二进制文件时,一旦遇到UTF-8无法解析的非文本字节,读取操作会直接提前终止,只返回之前解析成功的少量内容(也就是你看到的前两个字符)。 - 对应解决方式:
- 若要获取数据库里的内容,不要直接读取.db文件的原始字节,应该用SQLite相关工具或脚本执行查询操作。
- 只是想验证文件是否能完整读取的话,可改成以原始二进制格式读取,修改代码如下:
set unixPath to "/Volumes/2_TB_SSD_external/Projects_2TB/computers-and-geekery/projects and languages/Obsidian development/wealthyvault/bin/logs/things-commit.db" -- 以二进制格式读取完整文件内容 set database_data to read POSIX file unixPath as «class RAW» -- 返回数据长度验证是否读取完整 return length of database_data
- 若要操作Things的任务数据,建议用官方提供的导入工具或API,直接操作.db文件存在结构变更的风险。
内容的提问来源于stack exchange,提问作者Rich
相关产品推荐
相关产品推荐

