有没有办法解码这个字符串??
实际字符串:其他语言测试 - 测试
以邮件方式发送邮件时的base64编码为
“=?ISO-2022-JP 2 B 4 GyRCQjZCPjhsOEBCLDtuGyhCIC0gdGVzdGluZw ==?=”
<?php
echo base64_decode('GyRCQjZCPjhsOEBCLDtuGyhCIC0gdGVzdGluZw==');
?>
这是base 64编码,我无法将其解码为实际的中文字符串。因为它已经使用“iso-2022-jp”编码,我也尝试在线base64decode.org网站解码这个字符串,但我找不到原来的字符串,我怎么能这样做?
答案 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