Laravel では、Maatwebsite/Laravel-Excel を使用すると Excel ファイルを処理するのに非常に便利です。ただし、インポートされた Excel ファイルに中国語が含まれている場合、Laravel はデータベース内の中国語の文字を正しく表示できないことがあります。この記事では、この問題を調査し、いくつかの解決策を提供します。
問題の説明
Maatwebsite/Laravel-Excel を使用してテーブルを Laravel アプリケーションにインポートすると、中国語の文字が文字化けしたり、正しく表示されない場合があります。この問題は通常、次の状況で発生します。
解決策
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 ファイルを開く前に、それを 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 import Excel中国語が表示されないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。