5

C#(SharpZipLibを使用)からPHPにgzipで圧縮された文字列を送信し、readgzfileで解凍します。これは機能しますが、文字列内の各文字の後に2つの奇妙な文字が続きます(コンソールでvimを使用すると、これらはとして表示されます^@)。gzopen / gzreadも試してみましたが、同じ結果になりました。

$clean= preg_replace('/[^(\x20-\x7F)]*/','', $string);$ clean文字列を使用して文字列から非ASCII文字をクリーンアップすると、C#の文字列と同じになります。

これは機能しますが、何が起こっているのか、そしてその理由を知りたいので、これが常に機能するか、より良い解決策を考え出すことができます。

4

1 に答える 1

0

文字列が Windows で作成されていることを考えると、マルチバイト エンコーディングが使用されている可能性があります。

bin2hex($string)vim に依存する代わりに、16 進表現を使用して確認することで、これを自分で確認できます。

UTF-16またはが使用されている場合UCS2は、次のように変換できます。

// iconv($from, $to, $str)
$clean = iconv('UTF-16', 'UTF-8', $string);
于 2012-10-24T05:40:56.667 に答える