>데이터 베이스 >MySQL 튜토리얼 >utf8 mysql 잘못된 코드

utf8 mysql 잘못된 코드

王林
王林원래의
2023-05-23 09:57:37982검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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