gpt4 book ai didi

linux - Centos 上的 zip 命令不保留法语特殊字符

转载 作者:行者123 更新时间:2023-12-04 19:41:22 25 4
gpt4 key购买 nike

我有一台运行 Centos 的 vagrant 机器,它或多或少与我正在处理的 prod 环境相同。
我刚刚在 vagrant 上使用 zip 命令打包文件的方式与生产环境中同一文件夹上的相同命令相比有所不同。
要打包的文件夹zip -r archive.zip "Target Folder"命令包含一些 PDF 文件,其名称包含法语特殊字符,例如 é 或 à。
从 prod 运行命令,工作正常,但在我的 VM 上,所有这些未知字符都在存档中转换为 T 字母,也在解压缩的文件夹中。
有什么建议我应该检查哪些设置才能改变这种行为?

最佳答案

让我们从 zip 开始& unzip程式。有几种可能的情况

  • zip 存档中的文件名根本不保留法语特殊字符。
  • 文件名存储正确,但解压缩程序不知道如何处理法语特殊字符。

  • 首先要检查的是 zip 的构建两台机器上都支持 Unicode。如果您没有看到 UNICODE_SUPPORT线,这是个问题。
    $ zip -v
    ...
    Zip special compilation options:
    USE_EF_UT_TIME (store Universal Time)
    SYMLINK_SUPPORT (symbolic links supported)
    LARGE_FILE_SUPPORT (can read and write large files on file system)
    ZIP64_SUPPORT (use Zip64 to store large files in archives)
    UNICODE_SUPPORT (store and read UTF-8 Unicode paths)
    STORE_UNIX_UIDs_GIDs (store UID/GID sizes/values using new extra field)
    UIDGID_NOT_16BIT (old Unix 16-bit UID/GID extra field not used)
    [encryption, version 2.91 of 05 Jan 2007] (modified for Zip 3)

    现在使用 unzip 运行相同的命令.同样,如果您没有看到 UNICODE_SUPPORT线,这是个问题。

    如果 zip & unzuip两个盒子上的程序完全支持 Unicode,问题很可能是盒子上的区域设置。首先运行 locale命令。你需要看到 UTF-8
    $ locale
    LANG=en_GB.UTF-8
    LC_CTYPE="en_GB.UTF-8"
    LC_NUMERIC="en_GB.UTF-8"
    LC_TIME="en_GB.UTF-8"
    LC_COLLATE="en_GB.UTF-8"
    LC_MONETARY="en_GB.UTF-8"
    LC_MESSAGES="en_GB.UTF-8"
    LC_PAPER="en_GB.UTF-8"
    LC_NAME="en_GB.UTF-8"
    LC_ADDRESS="en_GB.UTF-8"
    LC_TELEPHONE="en_GB.UTF-8"
    LC_MEASUREMENT="en_GB.UTF-8"
    LC_IDENTIFICATION="en_GB.UTF-8"
    LC_ALL=en_GB.UTF-8

    如果这就是问题所在,我希望支持法语字符的盒子在 LC_ 中有 UTF-8。变量和你的其他盒子没有UTF-8。

    关于linux - Centos 上的 zip 命令不保留法语特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60333558/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com