解码base64字符串 - php

时间:2013-09-17 05:42:23

标签: php base64

有没有办法解码这个字符串??

实际字符串:其他语言测试 - 测试

以邮件方式发送邮件时的base64编码为

“=?ISO-2022-JP 2 B 4 GyRCQjZCPjhsOEBCLDtuGyhCIC0gdGVzdGluZw ==?=”

<?php
echo base64_decode('GyRCQjZCPjhsOEBCLDtuGyhCIC0gdGVzdGluZw==');
?>

这是base 64编码,我无法将其解码为实际的中文字符串。因为它已经使用“iso-2022-jp”编码,我也尝试在线base64decode.org网站解码这个字符串,但我找不到原来的字符串,我怎么能这样做?

3 个答案:

答案 0 :(得分:11)

使用iconv()

<?php
$input = base64_decode('GyRCQjZCPjhsOEBCLDtuGyhCIC0gdGVzdGluZw==');//$BB6B>8l8@B,;n(B - testing
$input_encoding = 'iso-2022-jp';
echo iconv($input_encoding, 'UTF-8', $input); //其他語言測試 - testing
?>

答案 1 :(得分:2)

您正在查看的是MIME标头编码。它可以由mb_decode_mimeheader()解码,并由mb_encode_mimeheader()生成。例如:

<?php
mb_internal_encoding("utf-8");
$subj = "=?iso-2022-jp?B?GyRCQjZCPjhsOEBCLDtuGyhCIC0gdGVzdGluZw==?=";
print mb_decode_mimeheader($subj);
?>

其他語言測試 - testing

(此处需要调用mb_internal_encoding(),因为主题行的内容无法用ISO8859-1的默认内部编码表示。)

答案 2 :(得分:1)

首先尝试将字符串编码为UTF-8,然后将其编码为base 64。 解码时相同,从base64解码字符串,然后从UTF-8解码。 这对我有用:

php > $base = "其他語言測試 - testing";
php > $encoded = base64_encode(utf8_encode($base));
php > $decoded = utf8_decode(base64_decode($encoded));
php > echo ($decoded === $base) . "\n";
1