【问题标题】:different results when I encode a character to base64当我将字符编码为 base64 时的不同结果
【发布时间】:2021-02-12 12:19:50
【问题描述】:

当我将一个字符编码为 base64 时,我会得到不同的结果,具体取决于我传递字符的方式: 比如我想编码chr(128) => €

1.传递chr()的结果:base64_encode(chr(128)) => 'gA=='
2.直接传递字符:base64_encode('€') => '4oKs'

为什么结果不同?

【问题讨论】:

    标签: php base64 chr


    【解决方案1】:

    chr(128) 返回一个代表欧元符号的 1 字节字符,因此 base64 编码的字符串只编码 1 个字节(80 十六进制 = 128 十进制):

    echo bin2hex(base64_decode('gA=='));
    

    80

    另一方面,base64_encode('€') 中的“€”是一个 unicode 字符串,编码结果包含 3 个字节,即欧元符号的 unicode 表示:

    echo bin2hex(base64_decode('4oKs'));
    

    E282AC

    【讨论】:

      猜你喜欢
      • 2019-10-04
      • 1970-01-01
      • 2021-05-28
      • 2018-09-13
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多