検索

ホームページ  >  に質問  >  本文

同じ文字列が PHP で異なる方法でエンコードされるのはなぜですか?

header("Content-type:text/html;charset=utf-8");
$secret1 = "rZa9GneIzd9MNyoTv/Ghpk2V6ZHD0KeQC7t0ymEH7cI=";
$secret2 = 'rZa9GneIzd9MNyoTv/Ghpk2V6ZHD0KeQC7t0ymEH7cI=';
$secret3 = 'rZa9GneIzd9MNyoTv/Ghpk2V6ZHD0KeQC7t0ymEH7cI=';

var_dump(trim($secret1));
echo "<br>";
var_dump(trim($secret2));
echo "<br>";
var_dump($secret3);
echo "<br>";
echo mb_detect_encoding($secret1, array("ASCII", "UTF-8", "GB2312", "GBK", "BIG5"));
echo "<br>";
echo mb_detect_encoding($secret2, array("ASCII", "UTF-8", "GB2312", "GBK", "BIG5"));
echo "<br>";
echo mb_detect_encoding($secret3, array("ASCII", "UTF-8", "GB2312", "GBK", "BIG5"));

コードを検出すると、同じ文字列でも異なるコードが表示されます。何が問題ですか?

20190506123102.png

保哥后院保哥后院2139日前1054

全員に返信(2)返信します

  • 天蓬老师

    天蓬老师2019-05-06 16:33:50

    文字セットが異なると、異なるエンコード スキームが存在します。現在の一般的なエンコード スキームは UTF8 です。

    返事
    0
  • 保哥后院

    ピーター・ジュー先生、ありがとうございました。これは、phpstorm で AES を使用して生成された暗号化コードであり、復号化プロセス中に文字列の長さとエンコード方法が異なることがわかります。現在、そのような問題を回避する方法をプログラミングで解決する過程にあります。現在、ファイル内で BOM の特殊な非表示文字を使用して、関数 RemoveBom($string) { if (substr($string, 0, 3) == Pack("CCC", 0xef, 0xbb, 0xbf)) { をクリアできます。戻り値substr($string, 3);

    保哥后院 · 2019-05-07 10:28:21
  • キャンセル返事