Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL에서 잘못 인코딩된 데이터를 UTF-8로 변환하는 방법은 무엇입니까?

<시간/>

바이너리 키워드와 함께 CONVERT() 함수를 사용해야 합니다. 구문은 다음과 같습니다 -

SELECT CONVERT(binary CONVERT(yourColumnName using latin1) USING UTF8) as anyAliasName FROM yourTableName;

위의 구문을 이해하기 위해 테이블을 생성해 보겠습니다. 테이블을 생성하는 쿼리는 다음과 같습니다 -

mysql> 테이블 생성 UtfDemo -> ( -> Id int NOT NULL AUTO_INCREMENT, -> Name varchar(15), -> PRIMARY KEY(Id) -> );쿼리 OK, 영향을 받는 행 0개(0.76초) 

INSERT 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다 -

mysql> UtfDemo(Name) values('Obama's')에 삽입; 쿼리 확인, 1개 행 영향(0.28초)mysql> UtfDemo(Name) values('John's')에 삽입, 쿼리 OK, 1행 영향(0.23초)mysql> UtfDemo(Name) values('Carol’s')에 삽입; 쿼리 OK, 1행 영향(0.15초)mysql> UtfDemo(Name) values('Sam' ™s');쿼리 OK, 영향을 받는 행 1개(0.19초)

select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -

mysql> UtfDemo에서 *선택;

다음은 출력입니다 -

+----+----------------+| 아이디 | 이름 |+----+----------------+| 1 | 오바마 || 2 | 존 || 3 | 캐롤 || 4 | Sam’s |+----+----------------+4행 세트(0.00초)

다음은 잘못 인코딩된 데이터를 UTF8로 변환하는 쿼리입니다 -

mysql> UtfDemo에서 ListOfName으로 CONVERT(binary CONVERT(Name using latin1) using utf8)를 선택합니다.

다음은 출력입니다 -

+------------+| 목록 이름 |+------------+| 오바마의 || 존스 || 캐롤의 || Sam의 |+------------+4행 세트, 1 경고(0.00초)