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_resultsconfig 변수를 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 |