>PHP 프레임워크 >Laravel >laravel import excel 중국어가 표시되지 않습니다

laravel import excel 중국어가 표시되지 않습니다

WBOY
WBOY원래의
2023-05-20 22:22:36694검색

Laravel에서는 Maatwebsite/Laravel-Excel을 사용하는 것이 Excel 파일을 처리하는 매우 편리한 방법입니다. 그러나 가져온 Excel 파일에 중국어가 포함되어 있는 경우 Laravel이 데이터베이스의 중국어 문자를 올바르게 표시하지 못하는 경우가 있습니다. 이 기사에서는 이 문제를 살펴보고 몇 가지 해결 방법을 제공합니다.

문제 설명

Maatwebsite/Laravel-Excel을 사용하여 Laravel 애플리케이션으로 테이블을 가져올 때 때때로 중국어 문자가 왜곡되거나 잘못 표시됩니다. 이 문제는 일반적으로 다음 상황에서 발생합니다.

  1. 데이터베이스 인코딩 불일치: 데이터베이스의 인코딩 방법이 Excel 파일의 인코딩 방법과 일치하지 않으면 한자가 손상됩니다.
  2. 엑셀 파일 인코딩 오류: 엑셀 파일의 인코딩 방식이 실제 인코딩 방식과 일치하지 않으면 한자도 손상됩니다.

해결 방법

  1. 데이터베이스 인코딩 확인

Laravel에서 데이터베이스 인코딩은 AppServiceProvider.php 파일과 관련되어 있습니다. 이 파일에서 데이터베이스 인코딩을 설정할 수 있습니다. MySQL 데이터베이스를 사용하는 경우 다음 파일에서 설정할 수 있습니다.

use IlluminateSupportServiceProvider;
use IlluminateSupportFacadesSchema;
class AppServiceProvider 확장 ServiceProvider
{

public function boot()
{
    Schema::defaultStringLength(191);
    DB::statement('SET NAMES utf8mb4');
    DB::statement('SET CHARACTER SET utf8mb4');
}

}

위 코드에서 데이터베이스 인코딩을 다음과 같이 설정했습니다. utf8mb4 , 파일의 인코딩을 Excel 파일과 동일하게 설정하면 문제가 해결됩니다.

  1. 엑셀 파일 인코딩 확인

엑셀 파일의 인코딩 방식이 실제 인코딩 방식과 일치하지 않을 경우, 불러올 때 중국어 글자가 깨져 나오는 문제가 발생합니다. 따라서 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.