FL_ENC_RAW 是 ZipArchive::addFromString 的有效标志吗?
Is FL_ENC_RAW a valid flag for ZipArchive::addFromString?
我有一个包含二进制 jpeg 数据的“字符串”变量。我想将此 jpeg 添加到一个 zip 文件中。根据 the documentation $flags
参数是
Bitmask consisting of ZipArchive::FL_OVERWRITE
, ZipArchive::FL_ENC_GUESS
, ZipArchive::FL_ENC_UTF_8
, ZipArchive::FL_ENC_CP437
.
ZipArchive::FL_ENC_GUESS
可能会起作用,但听起来这将尝试根据我的变量的内容试探性地猜测编码。如果我想明确一点,我应该将 $flags
设置为 ZipArchive::FL_ENC_UTF_8
还是 ZipArchive::FL_ENC_CP437
?在两者之间,ZipArchive::FL_ENC_UTF_8
似乎是更好的选择。
ZipArchive::FL_ENC_RAW
似乎是我真正应该使用的,但根据文档,这不是该特定函数的有效标志。这是遗漏吗?据我所知,它没有被列为任何函数的有效标志。
ZipArchive::addFromString is calling zip_file_add under the hood. If we take a look at the documentation for that function in libzip 我们找到了关于每个标志的作用的更多描述性解释:
- ZIP_FL_ENC_UTF_8: Interpret name as UTF-8.
- ZIP_FL_ENC_CP437: Interpret name as code page 437 (CP-437).
ZipArchive::FL_ENC_UTF_8
和 ZipArchive::FL_ENC_CP437
影响 文件名 (又名 $name
参数)的解释方式,而不是文件本身内的数据.无论数据是 UTF-8、CP-437、二进制数据还是其他任何数据,文件内容的处理方式都是一样的。
这已在该库的 php tests 中得到确认,其中这 4 行
$zip->addEmptyDir(chr(0x82), ZipArchive::FL_ENC_CP437);
$zip->addEmptyDir('è', ZipArchive::FL_ENC_UTF_8);
$zip->addFromString(chr(0x91), __FILE__, ZipArchive::FL_ENC_CP437);
$zip->addFromString('€', __FILE__, ZipArchive::FL_ENC_UTF_8);
预计会生成具有以下名称的文件
- é(对应第437页字符hex:82 dec:130)
- è
- æ(对应第437页字符hex:91dec:145)
- €
我有一个包含二进制 jpeg 数据的“字符串”变量。我想将此 jpeg 添加到一个 zip 文件中。根据 the documentation $flags
参数是
Bitmask consisting of
ZipArchive::FL_OVERWRITE
,ZipArchive::FL_ENC_GUESS
,ZipArchive::FL_ENC_UTF_8
,ZipArchive::FL_ENC_CP437
.
ZipArchive::FL_ENC_GUESS
可能会起作用,但听起来这将尝试根据我的变量的内容试探性地猜测编码。如果我想明确一点,我应该将 $flags
设置为 ZipArchive::FL_ENC_UTF_8
还是 ZipArchive::FL_ENC_CP437
?在两者之间,ZipArchive::FL_ENC_UTF_8
似乎是更好的选择。
ZipArchive::FL_ENC_RAW
似乎是我真正应该使用的,但根据文档,这不是该特定函数的有效标志。这是遗漏吗?据我所知,它没有被列为任何函数的有效标志。
ZipArchive::addFromString is calling zip_file_add under the hood. If we take a look at the documentation for that function in libzip 我们找到了关于每个标志的作用的更多描述性解释:
- ZIP_FL_ENC_UTF_8: Interpret name as UTF-8.
- ZIP_FL_ENC_CP437: Interpret name as code page 437 (CP-437).
ZipArchive::FL_ENC_UTF_8
和 ZipArchive::FL_ENC_CP437
影响 文件名 (又名 $name
参数)的解释方式,而不是文件本身内的数据.无论数据是 UTF-8、CP-437、二进制数据还是其他任何数据,文件内容的处理方式都是一样的。
这已在该库的 php tests 中得到确认,其中这 4 行
$zip->addEmptyDir(chr(0x82), ZipArchive::FL_ENC_CP437);
$zip->addEmptyDir('è', ZipArchive::FL_ENC_UTF_8);
$zip->addFromString(chr(0x91), __FILE__, ZipArchive::FL_ENC_CP437);
$zip->addFromString('€', __FILE__, ZipArchive::FL_ENC_UTF_8);
预计会生成具有以下名称的文件
- é(对应第437页字符hex:82 dec:130)
- è
- æ(对应第437页字符hex:91dec:145)
- €