取gzdeflate()
的输出,例如:
$a = gzdeflate('..........');
echo $a . "\n" . strlen($a);
我输出如下:
?Ӄ
5
所以我有一个5字节的字符串,其中包含无法正确输出的字符,因此无法复制和粘贴。
显然,echo gzinflate('?Ӄ');
不起作用,但echo gzinflate($a)
确实有效。
有没有办法将$a
的实际内容放到我的剪贴板上或输出它,以便我可以将其复制并粘贴到gzinflate()
中以检索原始字符串?我发现的唯一解决方法是:
$a = base64_encode(gzdeflate('..........'));
echo $a;
这给了我:
09ODAQA=
非常友好地echo gzinflate(base64_decode('09ODAQA='));
并获得..........
,但如果可能的话,我想跳过base64功能。
答案 0 :(得分:3)
问题在于您通过文本媒体传输二进制数据。如果您需要在屏幕上打印出要在其中选择和复制数据的数据,则无法传输这样的二进制数据。
如果在命令行中发生这种情况,可以以编程方式执行此操作而不显示实际内容。使用OS X的sqlcmd -S <ServerName> -U <LoginUser> -P <Password> -d <DatabaseName> -i <Inputfilenamewithpath> -o <Outputfilenamewithpath>
和pbcopy
命令:
pbpaste
如果确实需要可见文本表示,则需要确保输出是ASCII安全的(或至少是“Unicode安全”)而不是原始二进制数据。为此,您需要对二进制数据进行64或十六进制编码。
答案 1 :(得分:0)
我猜你的浏览器或控制台只是吃了一些特殊的字符,比如break line和其他字符。
您可以将此字符串放入任何文件(file_put_contents()),并打开此文件,例如将notepad ++打开。你将在这个文件中看到这些特殊的字符。