> 운영 및 유지보수 > Docker > docker mysql 중국어 잘못된 코드

docker mysql 중국어 잘못된 코드

WBOY
풀어 주다: 2023-05-13 17:08:08
원래의
1657명이 탐색했습니다.

Docker 컨테이너를 사용하여 MySQL 데이터베이스를 배포할 때 가끔 잘못된 중국어 문자가 나타날 수 있습니다. 이는 MySQL의 기본 문자 집합이 Latin1이고 중국어 문자를 UTF-8로 인코딩해야 하기 때문입니다. 이번 글에서는 docker mysql의 중국어 왜곡 문제를 해결하는 방법을 소개하겠습니다.

1. 현재 MySQL 문자 집합을 확인합니다

먼저 현재 MySQL 문자 집합을 확인해야 합니다. MySQL에 로그인한 후 다음 명령을 사용할 수 있습니다.

mysql> show variables like '%char%';
로그인 후 복사

그 중 문자 세트 관련 변수는 다음과 같습니다.

  • character_set_client: 클라이언트가 MySQL에 연결하기 위해 사용하는 문자 세트입니다. Character_set_connection: 연결 문자 집합, 즉 서버와 클라이언트 간의 문자 집합
  • character_set_database: 데이터베이스 문자 집합, 새로 생성된 데이터베이스는 이 문자 집합에 따라 생성됩니다. SELECT 쿼리에서 반환된 결과 문자 집합
  • character_set_server: 서버 문자 집합, MySQL 서버 자체에서 사용하는 문자 집합.
  • 2. MySQL 문자 집합을 UTF-8로 수정
  • 현재 MySQL 문자 집합이 Latin1인지 확인한 후 UTF-8로 수정해야 합니다. 이는 다음 두 가지 방법으로 수행할 수 있습니다.

MySQL 구성 파일을 수정합니다.

    MySQL 구성 파일(일반적으로 /etc/my.cnf 또는 /etc/mysql/my.cnf)에서 다음 두 줄을 추가합니다. :
  1. [client]
    default-character-set=utf8
    
    [mysqld]
    character-set-server=utf8
    로그인 후 복사
  2. 그 중 [client]는 클라이언트 캐릭터셋을 UTF-8로 설정하는데 사용되고, [mysqld]는 서버 캐릭터셋을 UTF-8로 설정하는데 사용됩니다. 수정 완료 후 MySQL 서비스 재시작:
sudo service mysql restart
로그인 후 복사

MySQL 연결 후 문자셋 수정

    MySQL 구성 파일을 수정할 수 없는 경우, MySQL 연결 후 문자셋을 수동으로 수정할 수 있습니다. 다음 명령어를 통해 MySQL에 접속할 수 있습니다.
  1. mysql --default-character-set=utf8 -u用户名 -p密码 数据库名
    로그인 후 복사
  2. 접속 성공 후 다음 명령어를 순서대로 실행하여 문자셋을 수정하세요.
SET character_set_client = utf8;
SET character_set_connection = utf8;
SET character_set_database = utf8;
SET character_set_results = utf8;
SET character_set_server = utf8;
로그인 후 복사

수정이 완료된 후 MySQL을 종료하고 다시 로그인하시면 적용됩니다.

3. Docker 컨테이너에서 UTF-8 문자 집합을 사용하세요

Docker 컨테이너의 MySQL은 이미지를 기반으로 실행되므로 이미지에서 UTF-8 문자 집합을 설정해야 합니다. 다음 Dockerfile을 통해 MySQL 이미지를 구축할 수 있습니다.

FROM mysql:latest
ENV MYSQL_ROOT_PASSWORD=root
ENV MYSQL_DATABASE=test
ENV MYSQL_CHARSET=utf8
ENV MYSQL_COLLATION=utf8_general_ci
COPY ./init.sql /docker-entrypoint-initdb.d/
로그인 후 복사

그 중 ENV 명령은 환경 변수를 설정하는 데 사용되고 MYSQL_CHARSET은 MySQL 문자 집합을 UTF-8로 설정하는 데 사용되며 MYSQL_COLLATION은 데이터 정렬을 다음과 같이 설정하는 데 사용됩니다. utf8_general_ci. 컨테이너 시작 시 자동 실행을 위해 초기화 스크립트 init.sql도 COPY 명령을 통해 이미지에 복사됩니다.

4. 요약

위의 세 단계를 통해 Docker 컨테이너에서 MySQL을 사용하고 문자 집합을 UTF-8로 설정하여 중국어 문자 깨짐 문제를 피할 수 있습니다. 물론 다국어 문자 집합을 처리해야 하는 경우에는 특정 상황에 따라 조정이 필요합니다. 이 글이 모든 사람에게 도움이 되기를 바랍니다.

위 내용은 docker mysql 중국어 잘못된 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿