PHP에서 한자를 사용하여 데이터베이스에 저장하면 문자가 깨져서 나타날 수 있습니다. 이는 데이터베이스와 웹페이지 인코딩이 일치하지 않아 데이터가 잘못 저장되기 때문입니다. 다음은 몇 가지 해결 방법입니다.
먼저 데이터베이스 인코딩이 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;
두 번째로, PHP 스크립트에서 인코딩을 UTF-8로 설정합니다:
header('Content-Type: text/html; charset=utf-8');
php.ini 파일의 PHP 세트에서도 구성할 수 있습니다:
default_charset = "utf-8"
데이터베이스에 연결할 때 인코딩도 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");
위에 해당되지 않는 경우 방법으로 문제를 해결할 수 있다면 데이터베이스에 저장된 문자열일 수 있습니다. 인코딩이 데이터베이스 인코딩과 일치하지 않으며 인코딩 변환이 필요합니다. 변환은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!