如何使用php中的utf-8字符集编码从base64解码数据

时间:2015-10-02 01:33:56

标签: php xml base64

我有一个像这样的动态内容的xml文件。

<?xml version="1.0" encoding="UTF-8"?>
<config>
  <tracks>
    <idx>0</idx>
    <path>/mnt/HD/HD_a2/mymusic/Worth It - Fifth Harmony - ft. Kid Ink.mp3</path>
  </tracks>
  <tracks>
    <idx>1</idx>
    <path>/mnt/HD/HD_a2/mymusic/Flashlight - Jessie J.mp3</path>
  </tracks>
  <tracks>
    <idx>2</idx>
    <path>/mnt/HD/HD_a2/mymusic/価値がある.mp3</path>
  </tracks>
</config>

还有一个php文件,根据第一个xml上的数据提取创建另一个xml文件。这是生成新xml的一段代码:

$item = $xml->addChild('tracks');
$item->addChild('artist', base64_encode($mp3Artist));
$item->addChild('song_name', base64_encode($mp3Title));
$item->addChild('song_path', base64_encode($file)); 
$item->addChild('album', base64_encode($mp3Album));

然而,当我编码/mnt/HD/HD_a2/mymusic/価値がある.mp3

输出为L21udC9IRC9IRF9hMi9teW11c2ljL+S+oeWApOOBjOOBguOCiy5tcDM=,当我再次解码时,值变为/mnt/HD/HD_a2/mymusic/価値ãŒã‚ã‚‹.mp3 但是当我使用utf-8编码在此网站https://www.base64decode.org/上解码时,输出与第一个/mnt/HD/HD_a2/mymusic/価値がある.mp3

相同

所以我的问题是,如何在php base64_encode上实现utf-8编码输出与www.base64decode.org完全相同?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您只需使用base64_decode

即可完成任何操作
$encoded = base64_encode("/mnt/HD/HD_a2/mymusic/価値がある.mp3");
echo "\xEF\xBB\xBF" ;//Optionally add this line if you want to force a program to read as utf-8
echo $encoded." <br />";
$decoded = base64_decode($encoded);
echo $decoded;

如果您想强制任何程序将文件解释为utf-8,可以选择在第一个输出行添加echo "\xEF\xBB\xBF" ;