簡體   English   中英

Laravel格式錯誤的字符UTF-8

[英]Laravel malformed character UTF-8

當我嘗試獲取所有目錄的列表並在JSON響應中使用該列表時,出現以下錯誤:響應的UTF-8字符格式錯誤。 我知道目錄中有類似“ÆØÅ”的字母。 當我使用dd($directories)我可以在每個目錄的前面看到一個“ b”,其中包含一個“ÆØÅ”字母(如圖中所示)。

我試圖使用它,但這也不起作用。 return response() -> json($movies, 200, ['Content-type'=> 'application/json; charset=utf-8'], JSON_UNESCAPED_UNICODE);

編輯:這是我現在的代碼。

$drives = ['M1', 'M2', 'M3', 'M4'];
$movies =[];

foreach ($drives as $drive) {

    $disk = Storage::disk($drive);
    foreach ($disk -> directories() as $movie) {
        $movies[] = $movie;
    }

}

return response() -> json($movies, 200, ['Content-type'=> 'application/json; charset=utf-8'], JSON_UNESCAPED_UNICODE);

在此處輸入圖片說明

您正在使用來自文件系統文件名的字符串。 此類字符串通常不在UTF-8中,通常使用ISO-8859-1。 巧合的是,這是utf8_encode需要工作的必需輸入編碼。

$drives = ['M1', 'M2', 'M3', 'M4'];
$movies =[];

foreach ($drives as $drive) {

    $disk = Storage::disk($drive);
    foreach ($disk -> directories() as $movie) {
        $movies[] = utf8_encode($movie);
    }

}

return response() -> json($movies, 200, ['Content-type'=> 'application/json; charset=utf-8'], JSON_UNESCAPED_UNICODE);

但是,如果您確實希望從其他(已知)編碼轉換為UTF-8,則需要使用mb_convert_encoding($str,"UTF-8",$from_encoding) 總體而言,請注意將HTTP響應編碼設置為UTF-8不會自動轉換任何字符編碼。 您必須手動執行。

暫無
暫無

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

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