我有一个像这样的动态内容的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完全相同?任何帮助将不胜感激。
答案 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" ;