作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我从 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);
关于c# - 在PHP中,解压后的gz字符串中每个字符后面都有^@,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13019310/
我是一名优秀的程序员,十分优秀!