>  기사  >  백엔드 개발  >  PHP 중국어 저장 데이터베이스가 깨졌을 경우 어떻게 해야 할까요?

PHP 중국어 저장 데이터베이스가 깨졌을 경우 어떻게 해야 할까요?

PHPz
PHPz원래의
2023-04-10 09:35:46541검색

PHP에서 한자를 사용하여 데이터베이스에 저장하면 문자가 깨져서 나타날 수 있습니다. 이는 데이터베이스와 웹페이지 인코딩이 일치하지 않아 데이터가 잘못 저장되기 때문입니다. 다음은 몇 가지 해결 방법입니다.

  1. 데이터베이스 인코딩 설정

먼저 데이터베이스 인코딩이 UTF-8(또는 중국어를 지원하는 다른 인코딩)인지 확인하세요. 그렇지 않은 경우 데이터베이스의 인코딩을 UTF-8로 설정할 수 있습니다.

MySQL 데이터베이스를 사용하는 경우 데이터베이스 및 데이터 테이블을 생성할 때 인코딩을 지정해야 합니다:

CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE TABLE tablename (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
    age INT(3)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  1. PHP 인코딩 설정

두 번째로, PHP 스크립트에서 인코딩을 UTF-8로 설정합니다:

header('Content-Type: text/html; charset=utf-8');

php.ini 파일의 PHP 세트에서도 구성할 수 있습니다:

default_charset = "utf-8"
  1. 데이터베이스 연결 설정

데이터베이스에 연결할 때 인코딩도 UTF-8로 설정해야 합니다. PDO를 사용하여 데이터베이스에 연결하는 경우 다음과 같이 작성할 수 있습니다.

$dsn = "mysql:host=localhost;dbname=dbname;charset=utf8mb4";
$dbh = new PDO($dsn, $user, $password);

MySQLi를 사용하여 데이터베이스에 연결하는 경우 다음과 같이 작성할 수 있습니다.

$mysqli = new mysqli("localhost", "user", "password", "dbname");
mysqli_set_charset($mysqli, "utf8mb4");
  1. 데이터 인코딩 변환

위에 해당되지 않는 경우 방법으로 문제를 해결할 수 있다면 데이터베이스에 저장된 문자열일 수 있습니다. 인코딩이 데이터베이스 인코딩과 일치하지 않으며 인코딩 변환이 필요합니다. 변환은 PHP의 iconv 함수나 mb_convert_encoding 함수를 사용하여 수행할 수 있습니다.

$str = "你好";
$str = iconv('gbk', 'utf-8', $str);
//或
$str = mb_convert_encoding($str, 'utf-8', 'gbk');

요약

PHP에서 데이터베이스에 한자를 저장할 때 데이터베이스와 웹페이지의 인코딩이 일치하는지 확인하고, 연결 데이터베이스와 PHP 스크립트에서 인코딩을 UTF-8로 설정하세요. 왜곡된 문자가 나타나면 인코딩 변환을 시도해 보세요. 이러한 방법이 문제 해결에 도움이 되기를 바랍니다.

위 내용은 PHP 중국어 저장 데이터베이스가 깨졌을 경우 어떻게 해야 할까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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