>백엔드 개발 >PHP 문제 >PHP mysql에서 중국어 문자가 깨지는 문제 해결

PHP mysql에서 중국어 문자가 깨지는 문제 해결

藏色散人
藏色散人원래의
2020-11-05 09:59:192147검색

php mysql 중국어 왜곡 코드에 대한 해결 방법: 1. 데이터베이스 또는 테이블의 인코딩 형식을 수정합니다. 2. PHP 문에 "mysqli_query("set names utf8");"를 추가합니다. 클라이언트 'charset=utf-8');" 그게 다입니다.

PHP mysql에서 중국어 문자가 깨지는 문제 해결

추천: "PHP 비디오 튜토리얼"

PHP와 Mysql에서 중국어로 잘못된 문제

MySQL로 데이터베이스를 구축할 때 때로는 몇 가지 잘못된 문제가 발생할 수 있습니다. 다음은 몇 가지 해결 방법입니다.

문제1: 데이터베이스 또는 테이블의 인코딩 형식이 잘못되었습니다

데이터베이스 생성 시 다음 코드를 사용하여 생성합니다.

CREATE DATABASE `test`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';

테이블 생성 시:

CREATE TABLE `table_name` (
id varchar(40) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`UserID` varchar(40) NOT NULL default '',
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

이 3개를 설정한 후 MySQL은 기본적으로 즉, 데이터베이스와 테이블을 구축할 때 동일한 인코딩 형식이 사용된다는 문제가 있습니다.

데이터베이스를 생성한 경우 다음 방법을 사용할 수 있습니다.

1. 기본 인코딩 형식을 확인하세요.

mysql> show variables like "%char%";  
+--------------------------+---------------+  
| Variable_name | Value |  
+--------------------------+---------------+  
| character_set_client | gbk |  
 character_set_connection | gbk |  
| character_set_database | utf8 |  
 character_set_filesystem | binary |  
| character_set_results | gbk |  
| character_set_server | utf8 |  
| character_set_system | utf8 |  
+--------------------------+-------------+

참고: 이전 2개를 확인하려면 set names utf8, set names gbk를 사용하여 기본 인코딩 형식; 워크벤치를 통해 데이터베이스 인코딩을 설정하는 것이 더 쉽습니다.

SET NAMES utf8을 실행하면 다음을 동시에 설정하는 것과 같습니다.

SET character_set_client='utf8';  
SET character_set_connection='utf8';  
SET character_set_results='utf8';

2. 테스트 데이터베이스의 인코딩 형식을 확인하세요.

mysql> show create database test;  
+------------+------------------------------------------------------------------------------------------------+  
| Database | Create Database |  
+------------+------------------------------------------------------------------------------------------------+  
| test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET gbk */ |  
+------------+------------------------------------------------------------------------------------------------+

3. yjdb 데이터 테이블의 인코딩 형식을 확인하세요.

mysql> show create table yjdb;  
| yjdb | CREATE TABLE `yjdb` (  
`sn` int(5) NOT NULL AUTO_INCREMENT,  
`type` varchar(10) NOT NULL,  
brc` varchar(6) NOT NULL,  
`teller` int(6) NOT NULL,  
`telname` varchar(10) NOT NULL,  
`date` int(10) NOT NULL,  
`count` int(6) NOT NULL,  
`back` int(10) NOT NULL,  
PRIMARY KEY (`sn`),  
UNIQUE KEY `sn` (`sn`),  
NIQUE KEY `sn_2` (`sn`)  
) ENGINE=MyISAM AUTO_INCREMENT=1826 DEFAULT CHARSET=gbk ROW_FORMAT=DYNAMIC |

질문 2: PHP와 Mysql 전송 인코딩이 호환되지 않습니다

문자 왜곡의 원인을 해결하려면 PHP 문에

mysqli_query(“set names utf8”);

mysql 세트 이름을 추가해야 합니다.

http://blog.csdn.net/zsmj_2011/article/details/7943734

문제 3: 클라이언트 디코딩 문제:

Add header('charset=utf-8'); 그게 다입니다

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

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