Php 是否从gzdeflate复制/粘贴多字节字符串?

Php 是否从gzdeflate复制/粘贴多字节字符串?,php,multibyte,Php,Multibyte,以gzdeflate()的输出为例: $a = gzdeflate('..........'); echo $a . "\n" . strlen($a); 我得到如下输出: ?Ӄ 5 所以我有一个5字节的字符串,其中包含无法正确输出的字符,因此无法复制和粘贴 显然,echo-gzflate(“?Ӄ”)不起作用,但膨胀($a)起作用 有没有办法将$a的实际内容放到我的剪贴板上,或者以我可以复制并粘贴到gzflate()的方式输出它以检索原始字符串?我发现的唯一解决办法是: $a = base6

gzdeflate()
的输出为例:

$a = gzdeflate('..........');
echo $a . "\n" . strlen($a);
我得到如下输出:

?Ӄ
5
所以我有一个5字节的字符串,其中包含无法正确输出的字符,因此无法复制和粘贴

显然,
echo-gzflate(“?Ӄ”)不起作用,但膨胀($a)
起作用

有没有办法将
$a
的实际内容放到我的剪贴板上,或者以我可以复制并粘贴到
gzflate()
的方式输出它以检索原始字符串?我发现的唯一解决办法是:

$a = base64_encode(gzdeflate('..........'));
echo $a;
这给了我:

09ODAQA=

这非常友好,可以进行
echo gzflage(base64_解码('09ODAQA=')
和get
………
,但如果可能的话,我想跳过base64函数。

问题是您正在通过文本媒介传递二进制数据。如果您需要在屏幕上打印数据,并在屏幕上进行选择和复制,则无法像这样传输二进制数据

如果这是在命令行上发生的,您可以通过编程实现,而不显示实际内容。使用OS X的
pbcopy
pbpaste
命令:

$ php test.php | pbcopy
$ pbpaste | someotherprogram

如果确实需要可见的文本表示,则需要确保输出是ASCII安全的(或至少是“Unicode安全的”),而不是原始二进制数据。为此,您需要对二进制数据进行64进制或十六进制编码。

我想您的浏览器或控制台只需要使用一些特殊字符,如break line和其他字符


您可以将此字符串放入任何文件(file_put_contents()),并打开此文件,例如,使用记事本+。您将在这个文件中看到这些特殊字符。

谢谢-是的,我要的是一个可见的文本表示法-您知道有什么方法可以直接从任何压缩函数中获得这样的输出,而不使用第二个编码函数吗?它不一定非得是
gzdeflate()
,这会破坏这样一个压缩函数的用途,真的。不一定。这里的输出是5字节,而原始字符串是10字节。本质上,我正在寻找一个可用的文本表示,它仍然只有5个字节;5字节的变量是不可用的。虽然有一个压缩函数可以接受ASCII安全值并压缩到ASCII安全输出,但我不知道有这样的实现。为什么需要这样做?你的值是否太大而无法压缩,然后在两个单独的步骤中编码?一点也不,我只是好奇压缩的机制,以及类似的东西是否已经存在。感谢您回答我的问题,并在您的个人资料中链接了我目前正在消化的有趣文章。不是真的。。。在sublime中尝试了这一点,得到了
D3D3830100
,我假设它是十六进制代码,不能膨胀为isYes,您可以看到它是5个字节,系统只吃这个字符-00