14 个版本 (3 个稳定版)
1.1.0 | 2023 年 3 月 11 日 |
---|---|
1.0.1 | 2021 年 11 月 7 日 |
1.0.0 | 2021 年 9 月 26 日 |
0.7.0 | 2021 年 9 月 5 日 |
0.2.1 | 2020 年 9 月 22 日 |
#640 在 命令行工具
每月 37 次下载
27KB
378 行
ZI
File Names to UTF-8 (ZIFU)
您是否遇到过从其他操作系统用户那里收到 ZIP 文件,解压后日本语文件名严重乱码,或者向其他操作系统用户发送 ZIP 文件,被告知非英文文件名也乱码的情况?这个工具可以检查 ZIP 文件中的文件名是否能够在所有操作系统和语言中无乱码地解压,并在必要时进行修复。
你有没有收到来自其他 OS 用户的 zip 文件,当你解压它们时,它们的非英文文件名完全乱码,或者当你向其他 OS 用户发送 zip 文件时,你被告知非英文文件名也乱码?
这个工具检查 zip 归档中的文件名是否可以在所有操作系统和语言中无乱码地解压(即显式以 UTF-8 编码),如果不能,则修复它们。
关于 Unicode 正规化
从 v0.6.0 版本开始,该工具可以检测和修正以不常见的 Unicode 正规化编码的 UTF-8 编码的文件名。
该工具从 0.6.0 版本开始检测并修正以不常见的 Unicode 正规化编码的 UTF-8 编码的文件名。
在 macOS 的 Finder 中创建的 ZIP 文件使用 HFS+ 专有的 Unicode 正规化编码的 UTF-8 编码文件名。在 Windows 或 Linux 上解压这些文件时可能会出现以下不便。
在 macOS 的 Finder 中创建的 ZIP 文件包含使用 HFS+ 专有的 Unicode 正规化编码的 UTF-8 编码的文件名。由解压创建的文件可能会导致以下不便。
- 看似同名的文件会创建多个(通常的 Unicode 正规化文件不会与之冲突)
看似同名的文件对会创建,它们不会被处理为重复。 - 在命令行或 GUI 的文本框中直接输入文件名或路径时无法选择它们
您不能通过在 CLI 或 GUI 的文本框中键入它们的名称或路径来选择它们。
因此,(在 Windows 或 Linux 中)未经一般化格式化的文件名,即使明确表示为 UTF-8,也假设在大多数环境中文件名可以正确处理。与隐式非 ASCII 编码一样,它们应被视为本工具的修正对象。
因此,未按常规方式(在Windows和Linux中)规范化的文件名不应被视为“在大多数环境中都已处理”,即使它们被明确指定为使用UTF-8编码。它们应像使用隐式非ASCII编码编码的文件一样,由该工具进行纠正。
安装 / 如何安装
下载二进制文件 / 下载二进制文件
请从这里下载最新版本。 / 请在此处下载最新版本。
https://github.com/tats-u/zifu/releases
Cargo
请运行以下命令。 / 请运行以下命令
cargo install zifu
开发版 / 开发版本
请运行以下命令。 / 请运行以下命令
cargo install --git https://github.com/tats-u/zifu.git
用法
要修复ZIP文件,请输入以下命令。
zifu <ZIPファイルのパス> <出力先のパス>
如果要覆盖,请输入以下命令代替。
zifu -i <ZIPファイルのパス>
要检查ZIP文件是否明确以UTF-8编码,请输入以下命令。
zifu -c <ZIPファイルのパス>
要检查ZIP文件的文件列表,请输入以下命令。
zifu -l <ZIPファイルのパス>
如果您要显示或修复在国外创建的ZIP文件的文件名,请使用-e <编码>
选项。例如,如果您从美国收到ZIP文件,尝试以下命令。
zifu -l -e cp437 <ZIPファイルのパス>
此外,尽管非常罕见,但如果您希望使用UTF-8而不是Shift-JIS,则可以使用-u
选项。
如何使用
要修复ZIP文件,请运行以下命令
zifu <Path to garbled ZIP file> <Path to output>
要覆盖ZIP文件,请使用以下命令代替
zifu -i <Path to the ZIP file>
要检查ZIP文件是否明确以UTF-8编码,请运行以下命令
zifu -c <Path to ZIP file>
要列出ZIP文件中的文件名,请运行以下命令
zifu -l <Path to ZIP file>
要显示或修复在国外创建的ZIP文件,请添加-e <编码>
选项。例如,如果您从日本收到ZIP文件,尝试以下命令。
zifu -e sjis -l <Path to ZIP file>
将出现已纠正的日文字符。
如果您更喜欢UTF-8而不是您的语言编码,请添加-u
选项。这对于说英语、泰语或越南语的人来说很重要。中文、日语和韩语的编码通常无法在没有错误的情况下解码UTF-8编码的字符串,因此如果您说这些语言,就没有必要添加它。
限制条件 / 限制
以下语言不受支持。 / 仅支持以下语言:括号中为主要的编码。 / 主要编码在括号中给出。
- 日语 / Japanese (Shift-JIS / EUC-JP)
- 中文 / Chinese (GBK / BIG5)
- 韩语 / Korean (EUC-KR)
- 越南语 / Vietnamese (Windows-1258)
- 泰语 / Thai (Windows-874)
- 英语 / English (CP437 / CP850)
- 西欧语言 / Western Europe languages (CP850)
- 希腊语 / Greek (CP737)
- 中欧语言 / Central Europe languages (CP852)
- 塞尔维亚语和波斯尼亚语 / Serbian & Bosnian (CP855)
- 土耳其语等 / Turkish etc. (CP857)
- 希伯来语 / Hebrew (CP862)
- 俄语等 / Russian etc. (CP866)
- 阿拉伯语 / Arabic (CP720)
在不支持的语言中,将使用CP437。 / In unsupported languages, CP437 will be used.
许可证
MIT许可证。请参阅LICENSE.txt获取详细信息。
许可证
MIT许可证;有关详细信息,请参阅LICENSE.txt。
依赖项
~11MB
~236K SLoC