Php 拉威尔畸形字符UTF-8
当我试图获取所有目录的列表并在JSON响应中使用该列表时,我得到一个错误,即响应的UTF-8字符格式不正确。 我知道我在目录里有像“ÆØÅ”这样的字母。当我使用Php 拉威尔畸形字符UTF-8,php,json,laravel,utf-8,Php,Json,Laravel,Utf 8,当我试图获取所有目录的列表并在JSON响应中使用该列表时,我得到一个错误,即响应的UTF-8字符格式不正确。 我知道我在目录里有像“ÆØÅ”这样的字母。当我使用dd($directories)时,我可以看到每个包含“ÆØÅ”字母的目录前面都有一个“b”(如图所示) 我试着用这个,但也不行。 return response()->json($movies,200,['Content-type'=>'application/json;charset=utf-8'],json\u UNESCAPED\
dd($directories)
时,我可以看到每个包含“ÆØÅ”字母的目录前面都有一个“b”(如图所示)
我试着用这个,但也不行。
return response()->json($movies,200,['Content-type'=>'application/json;charset=utf-8'],json\u UNESCAPED\u 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(通常)。巧合的是,这是需要工作的输入编码
$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\u convert\u编码($str,“UTF-8”和$from\u编码)
。总的来说,请注意,将HTTP响应编码设置为UTF-8不会自动转换任何字符编码。您必须手动执行此操作。创建JSON的数据来自哪里?是UTF-8吗?我将编辑帖子并添加我使用的内容。将$movies[]=utf8\u编码($movie)代码>工作得更好?文件系统文件名(您正在使用的)通常不是UTF-8,您从何处获得输出?@apokryfos谢谢,这确实有效!用它来回答,我会勾选它。:)