Dans Laravel, utiliser Maatwebsite/Laravel-Excel est un moyen très pratique de traiter des fichiers Excel. Cependant, parfois lorsque le fichier Excel importé contient du chinois, Laravel ne parvient pas à afficher correctement les caractères chinois dans la base de données. Cet article explorera ce problème et proposera quelques solutions.
Description du problème
Lors de l'utilisation de Maatwebsite/Laravel-Excel pour importer un tableau dans l'application Laravel, il arrive parfois que les caractères chinois soient tronqués ou affichés de manière incorrecte. Ce problème se produit généralement dans les situations suivantes :
Solution
Dans Laravel, l'encodage de la base de données est lié au fichier AppServiceProvider.php. Vous pouvez définir l'encodage de la base de données dans ce fichier. Si vous utilisez une base de données MySQL, vous pouvez la définir dans ce fichier :
utilisez IlluminateSupportServiceProvider;
utilisez IlluminateSupportFacadesSchema;
class AppServiceProvider extends ServiceProvider
{
public function boot() { Schema::defaultStringLength(191); DB::statement('SET NAMES utf8mb4'); DB::statement('SET CHARACTER SET utf8mb4'); }
}
Dans le code ci-dessus, nous avons défini l'encodage de la base de données sur utf8mb4 , définir le codage dans le fichier pour qu'il soit identique à celui du fichier Excel résoudra le problème.
Si la méthode d'encodage de votre fichier Excel est incohérente avec la méthode d'encodage réelle, le problème des caractères chinois tronqués se produira lors de l'importation. Par conséquent, avant d’importer le fichier Excel, nous devons nous assurer que le fichier Excel est correctement encodé. Un moyen simple est :
Avant d'ouvrir le fichier Excel, enregistrez-le en tant que fichier TXT puis importez le fichier TXT, cela garantira que l'encodage est correct.
Par exemple :
$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();
Dans cet exemple, nous convertissons le fichier Excel en fichier CSV, puis le convertissons en encodage UTF-8. Veuillez noter que cette approche n'est pas la meilleure et que vous devrez peut-être procéder à des ajustements supplémentaires pour garantir l'exactitude de vos données.
Conclusion
Résoudre le problème des caractères chinois n'est pas une tâche facile. Cependant, après la discussion dans cet article, nous avons compris les solutions de base. Si vous rencontrez toujours des problèmes avec les erreurs d'importation de caractères chinois, veuillez continuer à vérifier l'encodage de votre base de données et l'encodage de votre fichier Excel et apporter les ajustements nécessaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!