>  기사  >  백엔드 개발  >  PHP에서 데이터베이스에 데이터를 삽입할 때 중국어 문자가 깨지는 문제를 해결하는 방법

PHP에서 데이터베이스에 데이터를 삽입할 때 중국어 문자가 깨지는 문제를 해결하는 방법

PHPz
PHPz원래의
2023-04-10 09:44:46630검색

PHP는 주로 웹 개발에 사용되는 인기 있는 오픈 소스 스크립팅 언어입니다. 개발을 위해 PHP를 사용할 때, 특히 중국어 데이터를 데이터베이스에 삽입할 때 중국어 문자가 왜곡되는 문제에 직면할 수 있습니다. 이 기사에서는 PHP에서 이러한 상황을 방지하는 방법을 소개합니다.

  1. 문자 인코딩 설정

데이터베이스에 연결할 때 데이터베이스 문자 집합을 PHP 스크립트의 문자 집합과 일치하도록 설정해야 합니다. 그렇지 않으면 중국어 정보를 삽입할 때 잘못된 문자가 나타납니다. 데이터베이스에 연결할 때 다음 코드를 추가합니다.

$con=mysqli_connect("localhost","my_user","my_password","my_db");
mysqli_query($con,"SET NAMES utf8");
  1. UTF-8 인코딩 사용을 강조합니다

UTF-8은 유니코드 문자 집합을 지원하는 멀티바이트 인코딩입니다. UTF-8 인코딩을 사용하면 데이터베이스에 중국어가 포함된 데이터를 올바르게 삽입할 수 있습니다. 다음 방법으로 PHP 파일이 UTF-8로 인코딩되었는지 확인할 수 있습니다.

$encoding = mb_detect_encoding($str, "UTF-8,GBK,GB2312,BIG5");

반환된 $encoding이 "UTF-8"이면 PHP 파일이 UTF-8로 인코딩된 것입니다.

  1. PHP 함수를 사용하여 문자열 이스케이프

SQL 문을 실행할 때 데이터베이스의 데이터 보안을 보장하려면 문자열을 SQL 안전 문자열로 변환하는 함수를 사용해야 합니다. PHP는 문자열을 이스케이프하는 함수인 mysqli_real_escape_string()을 제공합니다. 새 데이터를 삽입하기 전에 문자열을 이스케이프하면 됩니다.

$name=mysqli_real_escape_string($con,$_POST['name']);
$sql="INSERT INTO TABLE_NAME(name) VALUES('$name')";
mysqli_query($con,$sql);
  1. PDO(PHP 데이터 개체) 사용

PDO는 다양한 데이터베이스를 지원할 수 있는 PHP 데이터베이스 추상화 계층입니다. PDO를 사용할 때 데이터베이스 연결에 대한 문자 인코딩을 설정하고 PDO::quote() 함수를 사용하여 이스케이프할 수 있습니다.

$dsn = "mysql:host=localhost;dbname=myDatabase;charset=utf8";
$username = "username";
$password = "password";
$options = array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
);

try {
    $pdo = new PDO($dsn, $username, $password, $options);
    $name = $pdo->quote($_POST['name']);
    $sql = "INSERT INTO TABLE_NAME(name) VALUES($name)";
    $pdo->exec($sql);
} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
    die();
}

PHP 삽입을 사용할 때 중국어 문자가 깨지는 문제가 발생하면 위의 방법을 통해 해결할 수 있습니다. 올바른 문자 인코딩 설정, 문자열 이스케이프 및 PDO 사용을 통해 언제든지 중국어 데이터를 데이터베이스에 성공적으로 삽입할 수 있습니다.

위 내용은 PHP에서 데이터베이스에 데이터를 삽입할 때 중국어 문자가 깨지는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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