我正在通过C#(使用SharpZiplib)的GZZ String发送到PHP,然后我用ReadGzfile解压缩。但是,这起作用了,但是字符串中的每个字符之后都有两个奇怪的字符(使用控制台中的VIM将显示为^@
)。我还尝试了Gzopen/gzread,但结果相同。
当我用$clean= preg_replace('/[^(x20-x7F)]*/','', $string);
从字符串中清理非ASCII字符时,$ Clean String与C#中的字符串相同。
当它起作用时,我想知道发生了什么,为什么我可以确保这将始终有效或提出更好的解决方案。
鉴于字符串是在Windows上创建的,很可能正在使用一些多键编码。
您可以自己使用bin2hex($string)
并检查十六进制表示而不是依靠VIM。
如果使用UTF-16
或UCS2
,则可以像这样转换它们:
// iconv($from, $to, $str)
$clean = iconv('UTF-16', 'UTF-8', $string);