복붙노트

[SQL] UTF8으로 라틴 데이터를 변환 MYSQL

SQL

UTF8으로 라틴 데이터를 변환 MYSQL

나는 MySQL 데이터베이스에 LOAD DATA INFILE을 사용하여 일부 데이터를 가져옵니다. 데이터베이스의 기본 문자 유형은 라틴이고, 나는 문자 집합을 지정하지 않고 LOAD DATA INFILE을 사용하기 때문에 테이블 자체에 열이 UTF8 문자 집합을 사용하고 있지만, 데이터베이스의 디폴트 문자 집합이 라틴어 1., 그것은 해석 파일의 데이터가 UTF8에도 불구하고 라틴로 파일. 지금은 내 UTF8의 콜럼에 심하게 인코딩 된 데이터의 무리가 있습니다. 나는 "CP1251에 삽입 UTF8"입니다 비슷한 문제를 해결하기 위해 보이는이 기사를 찾았지만, 내 문제는 "라틴어는 UTF8에 삽입"입니다. 나는 UTF8로 라틴 데이터를 변환이 쿼리를 편집하려고했지만, 작업로를 얻을 수 없습니다. 어느 데이터가 동일하거나 더 이전보다 엉망이 나온다. 그냥 예를 들어, 단어 퀘벡 QUA © 벡으로 보이고있다.

[추가 정보]

HEX (에 싸여 데이터), QUA © 벡을 선택하면 값 5175C383C2A9626563 있습니다.

이 테이블의 작성 표 (단축)입니다.

CREATE TABLE MyDBName.`MyTableName`
(
`ID` INT NOT NULL AUTO_INCREMENT, 
.......
`City` CHAR(32) NULL, 
.......
`)) ENGINE InnoDB CHARACTER SET utf8;

해결법

  1. ==============================

    1.나는 문제가 (때문에 WP 디폴트 캐릭터 세트로) 데이터 자체가 라틴어 데이터베이스 내에서 UTF-8로 이미 있다는 것을 옛 워드 프레스 설치에서이 같은 사례를 했어. 이 방법은 데이터 만 ddbb 및 테이블 형식의 변환을위한 진짜 필요가 없었다. 내가 MySQL은 많은 경우에 지금 UTF-8 클라이언트의 기본 문자 집합을 사용하는 이해 덤프를 수행 할 때 내 경험에 상황이 엉망. 따라서 데이터의 코딩 동일로 수출하는 것은 매우 중요합니다 있는지 확인하기. UTF-8을 코딩 라틴 DDBB 경우 :

    나는 문제가 (때문에 WP 디폴트 캐릭터 세트로) 데이터 자체가 라틴어 데이터베이스 내에서 UTF-8로 이미 있다는 것을 옛 워드 프레스 설치에서이 같은 사례를 했어. 이 방법은 데이터 만 ddbb 및 테이블 형식의 변환을위한 진짜 필요가 없었다. 내가 MySQL은 많은 경우에 지금 UTF-8 클라이언트의 기본 문자 집합을 사용하는 이해 덤프를 수행 할 때 내 경험에 상황이 엉망. 따라서 데이터의 코딩 동일로 수출하는 것은 매우 중요합니다 있는지 확인하기. UTF-8을 코딩 라틴 DDBB 경우 :

    $ mysqldump –default-character-set=latin1 –databases wordpress > m.sql
    

    그리고 UTF-8로 새 데이터베이스로 다시 가져 오기 전에 내 보낸 덤프 내에서 라틴어 참조를 교체합니다. 일종의:

    $ replace "CHARSET=latin1" "CHARSET=utf8" \
        "SET NAMES latin1" "SET NAMES utf8" < m.sql > m2.sql
    

    내 경우에는이 링크가 큰 도움이되었다. 스페인어 여기에 댓글.

  2. ==============================

    2.이 거의 여전히 OP의 실제이지만, 나는 ALTER 테이블에 대한 MySQL의 문서에서 해결책을 발견하는 일. 난 그냥 미래의 참조를 위해 여기에 게시 :

    이 거의 여전히 OP의 실제이지만, 나는 ALTER 테이블에 대한 MySQL의 문서에서 해결책을 발견하는 일. 난 그냥 미래의 참조를 위해 여기에 게시 :

    ALTER TABLE t1 CHANGE c1 c1 BLOB;
    ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET utf8;
    
  3. ==============================

    3.LOAD DATA INFILE는 인코딩 파일에 있어야하는데 설정할 수 있습니다 :

    LOAD DATA INFILE는 인코딩 파일에 있어야하는데 설정할 수 있습니다 :

    http://dev.mysql.com/doc/refman/5.1/en/load-data.html

  4. ==============================

    4.나는 UTF-8 데이터베이스 라틴 데이터베이스에 대한 그 http://code.google.com/p/mysqlutf8convertor/을 썼다. 모든 테이블과 필드는 UTF-8을 변경합니다.

    나는 UTF-8 데이터베이스 라틴 데이터베이스에 대한 그 http://code.google.com/p/mysqlutf8convertor/을 썼다. 모든 테이블과 필드는 UTF-8을 변경합니다.

  5. ==============================

    5.UTF8로 라틴 변환하면, 당신 종류의 필요성 반대를 수행 할 작업을하지 않습니다.

    UTF8로 라틴 변환하면, 당신 종류의 필요성 반대를 수행 할 작업을하지 않습니다.

    무슨 일이 실제로 일어난 경우이 있었다 :

    당신이 지금해야 할 것은 :

  6. ==============================

    6.나는 최근에 변환 프로세스를 자동화하는 쉘 스크립트를 완료했다. 당신이 교체하거나 제거 할 텍스트에 대한 사용자 정의 필터를 쓰기도 구성 할 수 있습니다. 예를 들어 : 스트립 HTML 문자 등 테이블 화이트리스트와 블랙리스트도 가능합니다. 당신은 소스 포지에서 다운로드 할 수 있습니다 : https://sourceforge.net/projects/mysqltr/

    나는 최근에 변환 프로세스를 자동화하는 쉘 스크립트를 완료했다. 당신이 교체하거나 제거 할 텍스트에 대한 사용자 정의 필터를 쓰기도 구성 할 수 있습니다. 예를 들어 : 스트립 HTML 문자 등 테이블 화이트리스트와 블랙리스트도 가능합니다. 당신은 소스 포지에서 다운로드 할 수 있습니다 : https://sourceforge.net/projects/mysqltr/

  7. ==============================

    7.이 시도:

    이 시도:

    1) DB를 덤프

    mysqldump --default-character-set=latin1 -u username -p databasename < dump.sql
    

    2) 열기 텍스트 편집기에서 dump.sql 및 "SET의 이름 UTF8"에 의해 "SET 명칭 라틴"의 모든 항목을 대체

    3) 새 데이터베이스를 작성하고 덤프 파일을 복원

    cat dump.sql | mysql -u root -p newdbname
    
  8. from https://stackoverflow.com/questions/1440837/mysql-convert-latin1-data-to-utf8 by cc-by-sa and MIT license