UTF8을 사용한 MySQL 명령 줄 형식
스웨덴어 / 노르웨이어 문자열이 포함 된 데이터베이스 테이블이 있습니다.
일부 데이터를 쿼리하면 다음과 같은 출력이 표시됩니다.
출력 set names latin1;
+-----------------------------------+
| name |
+-----------------------------------+
| Kid Interi##### |
| Bwg Homes |
| If Skadef####kring |
| Jangaard Export |
| Nordisk Film |
+-----------------------------------+
이제 set names utf8;
적절한 인코딩으로 문자를 보려면 MySQL 명령 줄의 표 형식 출력 형식이 중단됩니다.
출력 set names utf8;
+-----------------------------------+
| name |
+-----------------------------------+
| Kid Interiør |
| Bwg Homes |
| If Skadeförsäkring |
| Jangaard Export |
| Nordisk Film |
+-----------------------------------+
질문:
이것은 큰 문제는 아니지만 출력을 읽기가 조금 더 어렵게 만듭니다. 아무도 표 형식을 그대로 유지하는 방법을 알고 있습니까?
짧은 답변
다음 옵션을 사용하여 클라이언트를 시작하십시오 --default-character-set=utf8
.
mysql --default-character-set=utf8
이것을 /etc/mysql/my.cnf
파일 에서 기본값으로 설정할 수 있습니다 .
[mysql]
default-character-set=utf8
짧은 대답이 작동하지 않았습니다. 아래를 읽으십시오.
위의 명령은 character_set_client
, character_set_connection
및 character_set_results
config 변수를 utf8
.
모든 charset 관련 구성 변수의 값을 확인하려면 다음을 실행할 수 있습니다.
show variables like '%char%';
는 character_set_database
당신에게 당신의 것을 현재 데이터베이스 (스키마)의 문자 집합을 제공합니다. 스키마와 테이블에 지정된 캐릭터 세트와 기본적으로 생성되어 character_set_server
그것이 명시 적으로 지정되지 않는 한, CREATE
문.
는 character_set_server
에서 변경할 수 있습니다 my.cnf
파일 :
[mysqld]
character-set-server = utf8
또한 테이블과 열은 부모 테이블 또는 스키마와 다를 수있는 자체 문자 집합을 가질 수 있습니다. 데이터베이스의 각 테이블과 열의 값을 구체적으로 확인하려면이 답변을 참조하십시오. MySQL 데이터베이스 / 테이블 / 열이 어떤 문자 집합인지 어떻게 알 수 있습니까?
기존 테이블 및 열의 문자 집합을 변경하려면이 답변을 참조하십시오 . 전체 MySQL 데이터베이스 문자 집합 및 데이터 정렬을 UTF-8로 변환하는 방법?
mysql 문서 의 연결 문자 집합에 대한 자세한 정보 .
모든 것이 utf8로 설정되어 있지만 여전히 이상한 문자가 보입니다.
모든 charsets 변수, 테이블 및 열이로 설정되어 utf8
있어도 화면에 이상한 문자가 표시되는 경우가있을 수 있습니다. 예를 들어 누군가가 연결이 utf8
있는 클라이언트를 통해 latin1
(예 :를 실행 하여) 열에 유니 코드 문자를 작성했을 수 있습니다 mysql --default-character-set=utf8
. 이 경우 값이 기록 된 것과 동일한 문자 집합을 사용하여 데이터베이스에 연결해야합니다. 올바른 인코딩을 통해 검색하고 다시 쓸 수도 있습니다.
NOTE: As the comments point out, the myslq utf8
encoding is not a true and full implementation of UTF-8. If a full implementation of UTF-8 is needed, one can use the utf8mb4
charset:
mysql --default-character-set=utf8mb4
More info here: What is the difference between utf8mb4 and utf8 charsets in MySQL?
These words "ø ö ä" with utf8 takes 2 bytes, so did you forget use wchar or utf string?
Here's my test code in python:
s = ["Kid Interiør","Bwg Homes","If Skadeförsäkring"]
for w in s:
print '|',w.ljust(20,' '),'|'
the result is as the same as your program print out. all I need to do is change the encoding of string s
:
s = [u"Kid Interiør",u"Bwg Homes",u"If Skadeförsäkring"]
for w in s:
print '|',w.ljust(20,' '),'|'
the result is
| Kid Interiør |
| Bwg Homes |
| If Skadeförsäkring |
I haven't test in c++, but I suggest you can use wchar, std::wcout.
참고URL : https://stackoverflow.com/questions/6787824/mysql-command-line-formatting-with-utf8
'Development Tip' 카테고리의 다른 글
메소드 정의에서 메소드 이름 뒤에 올 때 등호 ( '=') 기호는 무엇을합니까? (0) | 2020.12.04 |
---|---|
왜 C ++ 표준 문자열 클래스에서 파생되지 않아야합니까? (0) | 2020.12.04 |
MySQL VARCHAR 크기? (0) | 2020.12.04 |
함수 이름 앞에 별표가있는 기능은 무엇입니까? (0) | 2020.12.04 |
py.test에게 특정 디렉토리를 건너 뛰도록 지시하는 방법은 무엇입니까? (0) | 2020.12.04 |