标签: zlib

Python zlib输出,如何恢复出mysql的utf-8表?

在python中,我使用zlib压缩了一个字符串,然后使用utf-8编码将其插入到blob类型的mysql列中.该字符串以utf-8的形式返回,但不清楚如何将其恢复为可以解压缩的格式.这是一些pseduo输出:

valueInserted = zlib.compress('a')='x\x9cK\x04\x00\x00b\x00b'

valueFromSqlColumn = u'x\x9cK\x04\x00\x00b\x00b'

zlib.decompress(valueFromSqlColumn)UnicodeEncodeError:'ascii'编解码器无法对位置1中的字符u'\ x9c'进行编码:序号不在范围内(128)

如果我这样做,它会插入一些额外的字符:

valueFromSqlColumn.encode('utf-8')='x\xc2\x9cK\x04\x00\x00b\x00b'

有什么建议?

python mysql unicode zlib utf-8

7
推荐指数
1
解决办法
2878
查看次数

使用zlib解压缩zip文件

我有一个archive.zip,其中包含两个加密的".txt"文件.我想解压缩存档以检索这2个文件.

这是我到目前为止所做的:

FILE *FileIn = fopen("./archive.zip", "rb");
if (FileIn)
    printf("file opened\n");
else
    printf("unable to open file\n");

fseek(FileIn, 0, SEEK_END);
unsigned long FileInSize = ftell(FileIn);
printf("size of input compressed file : %u\n", FileInSize);

void *CompDataBuff = malloc(FileInSize);
void *UnCompDataBuff = NULL;

int fd = open ("archive.zip", O_RDONLY);
CompDataBuff = mmap(NULL, FileInSize, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);
printf("buffer read : %s\n", (char *)CompDataBuff);

uLongf UnCompSize = (FileInSize * 11/10 + 12);
UnCompDataBuff = malloc(UnCompSize);

int ret_uncp ;

ret_uncp = uncompress((Bytef*)UnCompDataBuff, &UnCompSize, …
Run Code Online (Sandbox Code Playgroud)

c compression zlib unzip

7
推荐指数
3
解决办法
3万
查看次数

Python C扩展链接与自定义共享库

我正在一个非常古老的Red Hat系统上编写Python C扩展.系统具有zlib 1.2.3,它不能正确支持大文件.不幸的是,我不能只是将系统zlib升级到更新的版本,因为一些软件包会进入内部zlib结构并且会破坏新的zlib版本.

我想建立自己的扩展,使所有的zlib的调用(gzopen(),gzseek()等)解析为我安装在我的用户目录中的自定义zlib的,不影响Python可执行程序和其他扩展的其余部分.

我已尝试libz.a通过libz.a在链接期间添加到gcc命令行来静态链接,但它不起作用(仍然无法使用gzopen()例如创建大文件).我也尝试过传递-z origin -Wl,-rpath=/path/to/zlib -lz给gcc,但那也行不通.

由于zlib的新版本仍然被命名zlib 1.x,所以soname它是相同的,所以我认为符号版本控制不起作用.有办法做我想做的事吗?

我在32位Linux系统上.Python版本是2.6,它是定制的.

编辑:

我创建了一个最小的例子.我正在使用Cython(版本0.19.1).

档案gztest.pyx:

from libc.stdio cimport printf, fprintf, stderr
from libc.string cimport strerror
from libc.errno cimport errno
from libc.stdint cimport int64_t

cdef extern from "zlib.h":
    ctypedef void *gzFile
    ctypedef int64_t z_off_t

    int gzclose(gzFile fp)
    gzFile gzopen(char *path, char *mode)
    int gzread(gzFile fp, void *buf, unsigned int n) …
Run Code Online (Sandbox Code Playgroud)

python zlib shared-libraries cython

7
推荐指数
1
解决办法
2595
查看次数

使用zlib压缩目录

我有一个C++应用程序,需要使用标准的压缩格式的目录.我想过使用zip格式.因此,zlib显而易见.

我的问题是构建字典,即将包含一些zlib文件的目录压缩到标准zip文件.

我已经读过zlib做了但我不明白怎么做.我检查了minzip代码.它似乎使用gzip.我可以构建自己的格式,但我希望能够使用7z打开这些文件进行调试(以防万一).

我应该在zlib中使用什么来压缩目录?

[编辑] 在minzip 我使用minzip压缩1文件到它的gz版本 - >不拉链但对我来说很好.(我将在世界各种编译器上使用它 - 如果客户端平台出现问题,则标准格式更容易)

此外,还有这个代码main.它在文件列表上循环并将其写入输出.但是档案中文件位置的信息在哪里?

    do {
        if (uncompr) {
            if (copyout) {
                file = gzopen(*argv, "rb");
                if (file == NULL)
                    fprintf(stderr, "%s: can't gzopen %s\n", prog, *argv);
                else
                    gz_uncompress(file, stdout);
            } else {
                file_uncompress(*argv);
            }
        } else {
            if (copyout) {
                FILE * in = fopen(*argv, "rb");

                if (in == NULL) {
                    perror(*argv);
                } else {
                    file = gzdopen(fileno(stdout), outmode);
                    if (file == NULL) error("can't gzdopen stdout");

                    gz_compress(in, file);
                } …
Run Code Online (Sandbox Code Playgroud)

c++ zip zlib

7
推荐指数
2
解决办法
1万
查看次数

对'inflateInit2_'的未定义引用

我正在使用Code Blocks IDE,我想为SFML安装Tiled Map Editor.所以,我下载了源代码并将其导入我的项目.不幸的是,由于缺少zlib库,构建完成了错误.我下载并重新构建.这次我收到的错误如下:

undefined reference to `inflateInit2_'|
undefined reference to `inflateEnd'|
undefined reference to `inflateEnd'|
Run Code Online (Sandbox Code Playgroud)

在Internet上我找到了加入链接器命令的建议-lz,但编译器拒绝抛出错误:找不到-lz.有谁知道如何修理它?

问候.

c++ windows gcc zlib undefined-reference

7
推荐指数
1
解决办法
2万
查看次数

在python中压缩大数据的麻烦

我在Python中有一个脚本来压缩大字符串:

import zlib

def processFiles():
  ...
  s = """Large string more than 2Gb"""
  data = zlib.compress(s)
  ...
Run Code Online (Sandbox Code Playgroud)

当我运行此脚本时,出现错误:

ERROR: Traceback (most recent call last):#012  File "./../commands/sce.py", line 438, in processFiles#012    data = zlib.compress(s)#012OverflowError: size does not fit in an int
Run Code Online (Sandbox Code Playgroud)

一些信息:

zlib的.version ='1.0'

zlib.ZLIB_VERSION ='1.2.7'

# python -V
Python 2.7.3

# uname -a
Linux app2 3.2.0-4-amd64 #1 SMP Debian 3.2.54-2 x86_64 GNU/Linux

# free
             total       used       free     shared    buffers     cached
Mem:      65997404    8096588   57900816          0     184260    7212252
-/+ buffers/cache: …
Run Code Online (Sandbox Code Playgroud)

python zlib

7
推荐指数
1
解决办法
672
查看次数

Windows上的CMake zlib依赖性错误

我正在尝试在Windows上构建OpenEXR 2.2,但下载附带的说明没有按预期工作.IlmBase的指令有效,但是一旦我得到OpenEXR指令,它就会因为zlib而失败.此时的步骤是:

3. Go to http://www.zlib.net and download zlib 
Run Code Online (Sandbox Code Playgroud)

所以我去了这个网站,开头的部分是:当前版本在这里公开发布:我下载了 zlib源代码,版本1.2.8,zipfile格式......

然后,我转到下一步,这是我得到错误的地方:

4. Launch a command window, navigate to the OpenEXR folder with 
CMakeLists.txt, and type command:     
    setlocal
    del /f CMakeCache.txt
    cmake 
      -DZLIB_ROOT=<zlib location>
      -DILMBASE_PACKAGE_PREFIX=<where you installed the ilmbase builds>
      -DCMAKE_INSTALL_PREFIX=<where you want to instal the openexr builds>
      -G "Visual Studio 10 Win64" ^
      ..\openexr
Run Code Online (Sandbox Code Playgroud)

所以这是我输入的命令:

cmake -DZLIB_ROOT=C:\Users\erik\Documents\zlib-1.2.8 -DILMBASE_PACKAGE_PREFIX=C:\Users\erik\Documents\ilmbase-2.2.0\bin -DCMAKE_INSTALL_PREFIX=C:\Users\erik\Documents\ilmbase-2.2.0\bin -G "Visual Studio 10 Win64" ^..\openexr-2.2.0
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

找不到ZLIB(缺少:ZLIB_LIBRARY)(找到版本"1.2.8")

第一个问题是,指令没有说明任何关于ZLIB_LIBRARY的内容.其次,zlib下载看起来像是所有源代码.不涉及.lib或.dll文件.

c++ zlib cmake openexr

7
推荐指数
1
解决办法
3052
查看次数

如何让node.js zlib gunzip管道工作?

我有一个大的.gz文件(大小约为100Mb),但是,当我使用以下代码处理文件时,输出的文件只有256k.

var fs = require('fs'), zlib = require('zlib');

var inp1 = fs.createReadStream('feed.xml.gz');
var out1 = fs.createWriteStream('feed.xml');

inp1.pipe(zlib.createGunzip()).pipe(out1);
Run Code Online (Sandbox Code Playgroud)

问题似乎与zlib.createGunzip()管道有关.

有没有办法来解决这个问题?我想尝试直接从互联网流式传输.

zlib pipe gunzip node.js

6
推荐指数
0
解决办法
1108
查看次数

zlib,严厉的编译器警告和配置测试

我正在尝试从命令行编译zlib,我在使用时收到此消息-Wall -Wextra -Wconversion(完整的交叉编译脚本如下):

编译器错误报告对于./configure(可能是删除-Werror)来说太苛刻了 .

这是生成线的配置测试:

cat > $test.c << EOF
int foo() { return 0; }
EOF
echo "Checking for obsessive-compulsive compiler options..." >> configure.log
if try $CC -c $CFLAGS $test.c; then
  :
else
  echo "Compiler error reporting is too harsh for $0 (perhaps remove -Werror)." | tee -a configure.log
  leave 1
fi
Run Code Online (Sandbox Code Playgroud)

我不清楚究竟是什么判断过于严厉(特别是因为-Werror不存在).我也不太清楚测试中使用的示例程序是做什么的,所以我不清楚判断编译器警告"过于苛刻"的标准是什么.

什么是zlib抱怨太苛刻了?


#! /bin/sh

export PATH="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:$PATH"

export CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
export CXX=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++
export LD=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld
export AR=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar
export RANLIB=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib

export CFLAGS="-Wall -Wextra -Wconversion …
Run Code Online (Sandbox Code Playgroud)

warnings zlib configure

6
推荐指数
1
解决办法
7364
查看次数

如何Zlib膨胀Elixir中的字节列表?

给定Elixir中代表压缩文件的二进制文件,如何将它们传递给Erlang的zlib来进行膨胀?

compressed = <<120, 218, 237, 125, 123, 115, 28, 71, 126, ...>>
Run Code Online (Sandbox Code Playgroud)

我试过了:

z = :zlib.open()
uncompressed = :zlib.inflate(z, compressed)
:zlib.close(z)
Run Code Online (Sandbox Code Playgroud)

返回的错误是:

** (ErlangError) erlang error: :einval
               :zlib.call/3     
               :zlib.inflate/2
Run Code Online (Sandbox Code Playgroud)

期待一个"iodata"作为一个论点,所以也许我只需要转换它?

zlib elixir

6
推荐指数
1
解决办法
907
查看次数