c# php base64_encode 不一致问题

2024-11-09 03:15:37
推荐回答(1个)
回答1:

ASCII只包含128个字符,所以编码最大到127。

C#在进行ASCII转码的时候,会把大于127的char值转成63,PHP如果不转码的话,会使用默认编码,一般是utf-8。

所以如果想要两者得到一样的值,就需要使两者编码值一致,举两个例子。

一是C#转码时使用UTF8

Byte[] bytes = Encoding.UTF8.GetBytes(mp);

二是PHP先对编码值进行检测编辑

function chk($ord){
    if($ord>127)
        return $ord=63;
    else
        return $ord;
}
$char="";
$char.=chr(chk(130));
$char.=chr(chk(120));
$char.=chr(chk(120));
$char.=chr(chk(130));
$char.=chr(chk(180));
$char.=chr(chk(190));
echo base64_encode($char)."
";