-2

PHP には次のような文字列があります。

INPUT = "Γιώργο αν στείλεις αυτό ακριβώς (:

GREEK と LATIN 文字を同時に含む混合文字列です。特定の文字列内のすべての文字をこの文字列に変換したい

出力 = 0022039303B903CE03C103B303BF002003B103BD002003C303C403B503AF03BB03B503B903C2002003B103C503C403CC002003B103BA03C103B903B203CE03C2002

入力をこの種の出力に変換するにはどうすればよいですか?

4

2 に答える 2

6

理解するのにしばらく時間がかかりましたが、あなたがしたいことは、UTF-8 文字列を UTF-16 表現の大文字のバイナリ ダンプに変換することのようです。次のように簡単です。

$input = '"Γιώργο αν στείλεις αυτό ακριβώς (:';
$output = mb_strtoupper(bin2hex(mb_convert_encoding($input, 'UTF-16BE', 'UTF-8')));

接尾辞はビッグエンディアンを示します。BEこれは、あなたの例によると予想されるバイトオーダーのようです。

于 2013-01-03T15:12:18.547 に答える
3

あなたはiconvを試しましたか?おそらく次のようなものです:(編集)あなたの主な目標は、この変換された文字列をhttp経由でサービスに転送できるようにすることだと理解しています。その場合、結果にbase64_encode()を使用できます。完全なコード例を参照してください。

<?php
    $string = str_replace(' ', '', "Γιώργο αν στείλεις αυτό ακριβώς");
    $converted = iconv('UTF-8', 'UTF-16', $string);
    $encoded = base64_encode($converted);

    var_dump($encoded);
    var_dump(iconv('UTF-16', 'UTF-8', base64_decode($encoded)));
?>

あなたは得るでしょう:

エンコードされた:文字列 '/v8DkwO5A84DwQOzA78DsQO9A8MDxAO1A68DuwO1A7kDwgOxA8UDxAPMA7EDugPBA7kDsgPOA8I=' (長さ = 76 )

于 2013-01-03T13:22:35.163 に答える