laravel导入excel中文不显示
在laravel中,使用maatwebsite/laravel-excel来处置惩罚excel文件是一种很是利便的要领。然而,有时当导入的excel文件包括中文时,laravel无法准确地将中文字符显示在数据库中。本文将探讨这个问题,并提供一些解决计划。
问题形貌
当使用Maatwebsite/Laravel-Excel将表格导入Laravel应用程序时,有时中文字符会泛起乱码或显示过失的情形。这个问题通常泛起在以下情形中:
数据库编码不匹配:若是数据库的编码方法与Excel文件中的编码方法纷歧致,就会导致中文字符被破损。
Excel文件编码过失:若是Excel文件中的编码方法与现实的编码方法纷歧致,也会导致中文字符被破损。
解决计划
检查数据库编码
在Laravel中,数据库编码是与AppServiceProvider.php文件相关的。你可以在该文件中设置数据库编码。若是你使用的是MySQL数据库,可以在该文件中设置:
use IlluminateSupportServiceProvider;
use IlluminateSupportFacadesSchema;
class AppServiceProvider extends ServiceProvider
{
public function boot() { Schema::defaultStringLength(191); DB::statement('SET NAMES utf8mb4'); DB::statement('SET CHARACTER SET utf8mb4'); }
登录后复制
}
在上述代码中,我们已将数据库编码设置为utf8mb4,将该文件中的编码设置为与Excel文件相同即可解决问题。
检查Excel文件编码
若是你的Excel文件中的编码方法与现实的编码方法纷歧致,那么导入的时间就会泛起中文乱码的问题。因此,在导入Excel文件之前,我们需要确保Excel文件的编码方法是准确的。一种简朴的要领是:
在翻开Excel文件之前,先将其另存为TXT文件,然后再导入TXT文件,这样可以确保编码准确。
例如:
$reader = MaatwebsiteExcelExcel::load(‘excel.xls’)->toCsv(‘excel.csv’);
$csvData = file_get_contents(‘excel.csv’);
$csvData = mb_convert_encoding($csvData, ‘UTF-8’, ‘UTF-8’);
$csvFile = fopen(‘excel.csv’, ‘w’);
fwrite($csvFile, $csvData);
fclose($csvFile);
$reader = MaatwebsiteExcelExcel::load(‘excel.csv’)->get();
在这个例子中,我们将Excel文件转换为CSV文件,然后将其转换为UTF-8编码。请注重,这种要领并不是最好的要领,为了确保数据的准确性,你可能需要做更多的调解。
结论
处置惩罚中文字符的问题并不是一件容易的事情。可是,经由本文的讨论,我们已经相识了基本的解决计划。若是你仍然遇到了中文字符导入过失的问题,请坚持检查你的数据库编码和Excel文件编码,并举行须要的调解。
以上就是laravel导入excel中文不显示的详细内容,更多请关注本网内其它相关文章!