>  기사  >  백엔드 개발  >  PHP 삽입으로 추가된 잘못된 중국어 데이터를 해결하는 방법

PHP 삽입으로 추가된 잘못된 중국어 데이터를 해결하는 방법

PHPz
PHPz원래의
2023-04-04 14:29:10830검색

PHP를 사용하여 데이터베이스를 개발할 때 데이터를 삽입하기 위해 SQL 문을 사용해야 하는 경우가 많습니다. 그러나 가끔 데이터베이스에 중국어 데이터를 삽입할 때 잘못된 문자가 나타나는 경우가 있습니다. 이 기사에서는 이 문제를 해결하는 방법을 소개합니다.

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

먼저 데이터베이스가 어떻게 인코딩되는지 확인해야 합니다. MySQL에서는 다음 SQL 문을 통해 데이터베이스의 인코딩 방식을 확인할 수 있습니다.

SHOW VARIABLES LIKE 'character_set_database';

출력 결과가 utf8 또는 utf8mb4인 경우 데이터베이스의 기본 인코딩 방식은 UTF-8입니다. 출력 결과가 다른 인코딩인 경우 INSERT 문을 사용할 때 해당 문자 집합을 지정해야 합니다.

  1. PHP 인코딩 방법 설정

PHP에서는 다음 명령문을 사용하여 인코딩 방법을 설정할 수 있습니다.

mysqli_set_charset($mysqli, 'utf8');

여기서 $mysqli는 데이터베이스에 연결된 mysqli 개체입니다. 인코딩 방법을 UTF-8로 설정하면 중국어 데이터를 데이터베이스에 삽입할 때 잘못된 문자가 나타나지 않도록 할 수 있습니다.

  1. SQL 문에 문자 집합을 지정하세요

위의 두 가지 방법으로 잘못된 문제를 해결할 수 없다면 INSERT 문에 문자 집합을 지정해야 합니다. 예:

INSERT INTO `table_name` (`column1`, `column2`, ...) VALUES (N'中文', 'English', ...)

SQL 문에서 N''을 사용하여 중국어 문자열을 유니코드 인코딩으로 변환하면 중국어 문자열이 왜곡되지 않도록 합니다.

  1. Prepared 문 사용

마지막으로 SQL 삽입 공격을 방지하고 코드 재사용성을 높이려면 준비된 문을 사용하는 것이 좋습니다. 준비된 명령문은 mysqli 또는 PDO 개체를 통해 생성할 수 있으며 매개변수 설정 시 인코딩 방법을 지정할 수 있습니다. 예:

$stmt = $mysqli->prepare("INSERT INTO `table_name` (`column1`, `column2`, ...) VALUES (?, ?, ...)");
$stmt->bind_param("ss", $val1, $val2, ...);
$stmt->execute();

이 예에서는 매개변수 설정을 위해 바인딩_param 메서드를 사용할 때 문자 집합을 'ss'로 설정합니다. 이는 매개변수가 문자열 유형이고 문자 세트가 UTF-8임을 의미합니다.

요약

이 문서에서는 데이터베이스 인코딩 확인, PHP 인코딩 방법 설정, SQL 문에 문자 집합 지정, 준비된 문 사용 등 PHP INSERT SQL에 중국어 왜곡 문자를 추가하는 문제를 해결하는 여러 가지 방법을 소개합니다. 개발 과정에서 실제 상황에 따라 적절한 방법을 선택하고 코딩 표준을 따라 코드의 가독성과 유지 관리성을 보장해야 합니다.

위 내용은 PHP 삽입으로 추가된 잘못된 중국어 데이터를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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