Whi*_*key 5 php c# string gzip sharpziplib
我正在从C#(使用SharpZipLib)发送一个gzip压缩字符串到PHP,我用readgzfile解压缩.这是有效的,但是字符串中的每个字符后跟两个奇怪的字符(在控制台中使用vim显示为^@).我也试过gzopen/gzread但结果相同.
当我用字符串$clean= preg_replace('/[^(\x20-\x7F)]*/','', $string);清除字符串中的非ASCII字符时,$ clean字符串与C#中的字符串相同.
虽然这有效,但我想知道发生了什么以及为什么这样我可以确保它始终有效或提出更好的解决方案.
鉴于该字符串是在 Windows 上创建的,因此可能使用了某种多字节编码。
您可以通过使用bin2hex($string)并检查十六进制表示来自行验证这一点,而不是依赖 vim。
如果使用UTF-16或,您可以像这样转换它们:UCS2
// iconv($from, $to, $str)
$clean = iconv('UTF-16', 'UTF-8', $string);
Run Code Online (Sandbox Code Playgroud)