簡體   English   中英

如何在php中使用utf-8字符集編碼從base64解碼數據

[英]How to decode data from base64 with utf-8 charset encoding in php

我有一個 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但是當我在這個站點上對它進行https解碼時://www.base64decode.org/使用utf-8編碼,輸出與第一個相同,即/mnt/HD/HD_a2/mymusic/価値がある.mp3

所以我的問題是,如何在 php 的base64_encode上實現 utf-8 編碼以輸出與 www.base64decode.org 上完全相同的輸出? 任何幫助都感激不盡。

您無需執行任何操作,只需使用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;

並可選擇添加echo "\\xEF\\xBB\\xBF" ; 如果要強制任何程序將文件解釋為 utf-8,請在第一輸出行

暫無
暫無

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

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