簡體   English   中英

解碼 base64 字符串 - php

[英]Decode base64 string - php

有沒有辦法解碼這個字符串?

實際字符串 : 其他語言測試 - testing

base64 編碼,同時作為主題發送郵件

"=?iso-2022-jp?B?GyRCQjZCPjhsOEBCLDtuGyhCIC0gdGVzdGluZw==?="

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

這是base 64編碼,我無法將其解碼為實際的中文字符串。由於它已使用“iso-2022-jp”進行編碼,因此我也嘗試過在線base64decode.org站點來解碼此字符串,但我無法找到原始字符串,我該怎么做?

使用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
?>

您正在查看的是 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 的默認內部編碼表示。)

嘗試先將字符串編碼為 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM