UTF-8 인코딩은 현재 가장 널리 사용되는 문자 인코딩 형식이며 MySQL은 UTF-8 인코딩을 사용하여 데이터를 저장할 수도 있습니다. 그러나 MySQL을 사용하여 UTF-8로 인코딩된 데이터를 저장할 때 문자가 깨질 수 있습니다. 이 기사에서는 MySQL에서 UTF-8 인코딩 문자 왜곡이 발생하는 이유와 해결 방법을 소개합니다.
역사적 이유로 인해 MySQL은 기본적으로 Latin1(ISO-8859-1) 인코딩 형식을 사용합니다. 이 인코딩 형식은 대부분의 서양 언어에 적합합니다. 하지만 아시아어, 중동어 등 복잡한 문자 집합을 사용하는 언어의 경우에는 부족해 보인다.
인터넷 기술이 발전하면서 점점 더 많은 국가와 지역에서 문자 통신에 라틴 알파벳이 아닌 문자 집합을 사용하고 있습니다. 이 문제를 해결하기 위해 MySQL은 MySQL이 더 풍부한 언어 텍스트를 저장할 수 있도록 UTF-8 인코딩 형식을 도입했습니다. UTF-8(8-bit Unicode Transformation Format) 인코딩은 유니코드 표준의 모든 문자를 지원하는 가변 길이 문자 인코딩입니다. 그러나 UTF-8 인코딩이 MySQL에 저장되면 문자가 깨질 수 있습니다.
깨진 문자의 원인과 해결 방법:
문제 1: MySQL 테이블의 CHARSET이 UTF-8 형식이 아닙니다.
테이블 생성 시 CHARSET을 지정하지 않으면 기본적으로 데이터베이스의 CHARSET이 사용됩니다. 따라서 데이터베이스 CHARSET이 UTF-8이 아닌 경우 UTF-8 인코딩으로 저장된 데이터는 왜곡됩니다.
1.1 데이터베이스의 CHARSET을 확인하세요
먼저 데이터베이스의 CHARSET을 확인해야 합니다. 다음 명령을 통해 현재 데이터베이스의 CHARSET을 확인할 수 있습니다.
mysql> show create database databaseName;
1.2 데이터베이스의 CHARSET을 수정하세요
데이터베이스가 UTF-8이 아닌 경우 데이터베이스의 CHARSET을 수정해야 합니다. 다음 단계를 통해 데이터베이스의 CHARSET을 수정할 수 있습니다.
1.2.1 데이터베이스 백업
데이터베이스의 CHARSET을 수정해야 하므로 먼저 데이터베이스를 백업해야 합니다.
1.2.2 데이터베이스의 기본 인코딩 수정
MySQL에서는 데이터베이스 생성 시 기본 인코딩을 지정할 수 있습니다. 기본 인코딩은 일반적으로 UTF-8로 설정됩니다. .
MySQL 구성 파일 /etc/mysql/mysql.conf.d/mysqld.conf를 수정하고 "[mysqld]"를 찾아 다음 내용을 추가하세요.
[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_general_ci
수정이 완료되면 저장하고 종료하세요.
1.2.3 데이터베이스 및 테이블 인코딩 수정
MySQL에서는 다음 SQL 문을 통해 데이터베이스, 테이블 및 열의 인코딩을 확인할 수 있습니다.
/*查看数据库使用的编码*/ SHOW VARIABLES LIKE 'character_set_database'; /*查看数据表使用的编码*/ SHOW FULL COLUMNS FROM 表名; /*查看列使用的编码*/ SELECT column_name, character_set_name FROM information_schema.columns WHERE table_name='表名';
현재 인코딩이 UTF-8을 사용하지 않는 경우 다음이 필요합니다. 데이터베이스, 테이블을 변경하기 위해 컬럼의 인코딩이 UTF-8로 수정되었으며, 이는 다음 SQL문을 통해 수정 가능합니다:
/*修改数据库编码为 utf8mb4 */ ALTER DATABASE databaseName CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; /*修改表编码为 utf8mb4*/ ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; /*修改列编码为 utf8mb4*/ ALTER TABLE 表名 MODIFY COLUMN 列名 varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
수정이 완료된 후 위의 보기 인코딩 방법을 다시 실행하여 CHARSET이 확인되는지 확인하세요. UTF-8 인코딩입니다.
문제 2: 데이터베이스 연결에 UTF-8 인코딩이 설정되지 않았습니다.
애플리케이션이 MySQL 데이터베이스에 연결할 때 연결 문자 집합을 지정해야 합니다. UTF-8 인코딩이 설정되지 않으면 읽기에 실패합니다. UTF-8로 인코딩된 데이터를 쓰는 경우 잘못된 문자가 나타납니다. MySQL 데이터베이스에 연결할 때 다음 문을 통해 UTF-8 인코딩을 설정할 수 있습니다.
SET NAMES utf8mb4;
질문 3: MySQL 클라이언트에 인코딩 문제가 표시됩니다.
명령줄을 사용하여 SQL 문을 실행할 때 잘못된 문자가 나타날 수 있습니다. 그 이유는 주로 다음과 같습니다. 클라이언트 터미널에 잘못된 문자가 표시됩니다. 이 문제는 MySQL 클라이언트의 인코딩 형식을 설정하여 해결할 수 있습니다.
3.1 Linux/MacOSX 클라이언트는 잘못된 문자를 해결합니다.
Linux 및 MacOSX 시스템에서는 다음 명령을 통해 MySQL 클라이언트 인코딩 형식을 설정할 수 있습니다.
export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8
설정이 완료된 후 MySQL 클라이언트를 실행하고 SQL 문을 실행할 수 있습니다. , 중국어 일반 문자를 표시합니다.
3.2 Windows 클라이언트는 잘못된 문자를 해결합니다.
Windows 시스템에서는 다음 단계를 통해 MySQL 클라이언트 인코딩 형식을 설정할 수 있습니다.
제어판 열기-> 시스템 및 보안-> ; 환경 변수
환경 변수에서 새로운 시스템 변수를 생성합니다:
变量名:LANG 变量值:zh_CN.UTF-8
설정이 완료되면 MySQL 클라이언트를 실행하고 SQL 문을 실행하며 한자를 정상적으로 표시할 수 있습니다.
요약:
MySQL에 UTF-8로 인코딩된 데이터를 저장할 때 문자가 깨질 수 있습니다. 코드가 왜곡되는 문제의 주요 원인은 테이블의 CHARSET이 UTF-8 인코딩 형식이 아니고 데이터베이스 연결이 UTF-8 인코딩으로 설정되지 않았으며 MySQL 클라이언트에 인코딩 문제가 표시되기 때문입니다. MySQL에서 CHARSET, 연결 문자 집합, 클라이언트 인코딩 형식을 올바르게 구성하면 문자가 왜곡되는 UTF-8 인코딩 문제를 해결할 수 있습니다.
위 내용은 utf8 mysql 잘못된 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!