Loading...
MySQL 9.5 Reference Manual 9.5의 12.5 Configuring Application Character Set and Collation의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
기본 MySQL 문자 집합과 정렬(utf8mb4,
utf8mb4_0900_ai_ci)을 사용하여 데이터를 저장하는 애플리케이션의 경우, 별도의 특수한 설정은 필요하지 않습니다. 애플리케이션이
다른 문자 집합이나 정렬을 사용하여 데이터를 저장해야 하는
경우, 문자 집합 정보를 여러 가지 방법으로 설정할 수 있습니다:
데이터베이스별로 문자 설정을 지정합니다. 예를 들어,
하나의 데이터베이스를 사용하는 애플리케이션은
utf8mb4 기본값을 사용할 수 있는 반면,
다른 데이터베이스를 사용하는 애플리케이션은 sjis를
사용할 수 있습니다.
서버 시작 시에 문자 설정을 지정합니다. 이렇게 하면 별도의 설정을 하지 않는 모든 애플리케이션에 대해 서버가 지정된 설정을 사용합니다.
소스에서 MySQL을 빌드하는 경우, 구성 시에 문자 설정을 지정합니다. 이렇게 하면 서버가 시작 시에 이를 지정할 필요 없이 모든 애플리케이션에 대해 해당 설정을 기본값으로 사용합니다.
서로 다른 애플리케이션이 서로 다른 문자 설정을 필요로 하는 경우, 데이터베이스별 방식은 상당한 유연성을 제공합니다. 대부분 또는 모든 애플리케이션이 동일한 문자 집합을 사용하는 경우에는, 서버 시작 시 또는 구성 시에 문자 설정을 지정하는 것이 가장 편리할 수 있습니다.
데이터베이스별 또는 서버 시작 방식의 경우, 설정은 데이터 저장을 위한 문자 집합을 제어합니다. 애플리케이션은 또한 클라이언트/서버 통신에 사용할 문자 집합을 서버에 알려야 하며, 이는 다음 설명된 지침에 따릅니다.
여기에서 보이는 예제에서는, 기본값인
utf8mb4 및
utf8mb4_0900_ai_ci 대신에
특정 컨텍스트에서 latin1 문자 집합과
latin1_swedish_ci 정렬을 사용하는 것으로 가정합니다.
database별로 character 설정을 지정합니다.
테이블이 데이터 저장을 위해 주어진
기본 문자 집합과 정렬을 사용하도록 하는 데이터베이스를 생성하려면,
다음과 같은 CREATE DATABASE 문을 사용합니다:
1SELECT * FROM table;
데이터베이스에 생성되는 테이블은 기본적으로
문자 컬럼에 대해 latin1과
latin1_swedish_ci를 사용합니다.
데이터베이스를 사용하는 애플리케이션은 또한 매번 서버에
연결할 때마다 자신의 커넥션을 설정해야 합니다. 이는
연결 후에 SET NAMES 'latin1'
문을 실행함으로써 수행할 수 있습니다. 이 문은
연결 방식(mysql
클라이언트, PHP 스크립트 등)에 상관없이 사용할 수 있습니다.
일부 경우에는 원하는 문자 집합을 사용하도록
커넥션을 다른 방식으로 설정할 수 있습니다. 예를 들어,
mysql을 사용하여 연결할 때
--default-character-set=latin1
명령줄 옵션을 지정하여
SET NAMES 'latin1'와 동일한 효과를 얻을 수 있습니다.
클라이언트 커넥션 설정에 대한 자세한 내용은 Section 12.4, “Connection Character Sets and Collations”을 참조하십시오.
참고
ALTER DATABASE를 사용하여
데이터베이스의 기본 문자 집합이나 정렬을 변경하는 경우,
해당 기본값을 사용하는 기존 저장 루틴은
새 기본값을 사용하도록 삭제 후 다시 생성해야 합니다.
(저장 루틴에서, 문자 데이터 타입을 사용하는 변수는
문자 집합이나 정렬이 명시적으로 지정되지 않은 경우
데이터베이스 기본값을 사용합니다.
Section 15.1.21, “CREATE PROCEDURE and CREATE FUNCTION Statements”을
참조하십시오.)
server startup 시에 character 설정을 지정합니다.
서버 시작 시에 사용할 문자 집합과 정렬을 선택하려면,
--character-set-server 및
--collation-server 옵션을 사용합니다.
예를 들어, 옵션 파일에 이 옵션들을 지정하려면
다음과 같은 줄을 포함합니다:
1[mysqld] 2character-set-server=latin1 3collation-server=latin1_swedish_ci
이 설정은 서버 전체에 적용되며, 어떤 애플리케이션이 생성하든 데이터베이스와 해당 데이터베이스에 생성되는 테이블의 기본값으로 적용됩니다.
애플리케이션은 여전히 앞서 설명한 대로
연결 후에 SET NAMES 또는
동등한 방법을 사용하여 자신의 커넥션을 설정해야 합니다.
각 클라이언트가 연결될 때마다 SET NAMES가 자동으로 실행되도록
서버를 --init_connect="SET NAMES 'latin1'" 옵션과 함께
시작하고 싶을 수 있습니다. 그러나
init_connect
값은 CONNECTION_ADMIN 권한
(또는 더 이상 사용되지 않는 SUPER
권한)을 가진 사용자에 대해서는 실행되지 않기 때문에,
이로 인해 일관성 없는 결과가 발생할 수 있습니다.
MySQL configuration 시에 character 설정을 지정합니다.
소스에서 MySQL을 구성 및 빌드하는 경우 사용할
문자 집합과 정렬을 선택하려면,
DEFAULT_CHARSET 및
DEFAULT_COLLATION CMake 옵션을 사용합니다:
1cmake . -DDEFAULT_CHARSET=latin1 \ 2 -DDEFAULT_COLLATION=latin1_swedish_ci
이렇게 생성된 서버는
데이터베이스, 테이블 및 클라이언트 커넥션에 대해
기본값으로 latin1 및
latin1_swedish_ci를 사용합니다. 따라서
서버 시작 시에 이러한 기본값을 지정하기 위해
--character-set-server 및
--collation-server를
사용할 필요가 없습니다. 또한
애플리케이션이 서버에 연결한 후
SET NAMES 또는 동등한 방법을 사용하여
커넥션을 설정할 필요도 없습니다.
MySQL 문자 집합을 애플리케이션에서 사용하도록 어떻게 설정하든, 해당 애플리케이션이 실행되는 환경 또한 고려해야 합니다. 예를 들어, 편집기에서 생성한 파일에서 가져온 UTF-8 텍스트를 사용하여 문을 전송하려는 경우, 파일 인코딩이 올바르고 운영 체제가 이를 올바르게 처리하도록 하기 위해 환경의 로케일을 UTF-8로 설정한 상태에서 파일을 편집해야 합니다.
터미널 창 내에서 mysql 클라이언트를 사용하는 경우,
해당 창은 UTF-8을 사용하도록 설정되어야 하며, 그렇지 않으면
문자가 올바르게 표시되지 않을 수 있습니다. 웹 환경에서 실행되는
스크립트의 경우, 스크립트는 MySQL 서버와의 상호 작용을 위해
문자 인코딩을 올바르게 처리해야 하며,
브라우저가 페이지 콘텐츠를 어떻게 표시해야 하는지 알 수 있도록
인코딩을 올바르게 나타내는 페이지를 생성해야 합니다. 예를 들어,
<head> 요소 안에 다음 <meta> 태그를
포함할 수 있습니다:
1<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
12.4 Connection Character Sets and Collations
12.6 Error Message Character Set