2009-09-25 5 views
27

여러 테이블에 흩어져있는 깨진 utf8 문자가있는 데이터베이스가 있습니다. 문자 목록이 아닌 특정 테이블을 고정 매우 광범위한 AFAIK (áéíúóÁÉÍÓÚÑñ)MySQL에서 utf8 깨진 문자 감지하기

입니다

update orderItem set itemName=replace(itemName,'á','á'); 

매우 간단하지만 깨진 문자를 검출하는 방법을 얻을 수 없습니다. 내가

SELECT * FROM TABLE WHERE field LIKE "%Ã%"; 

처럼 뭔가를 할 경우 나는 때문에 조합의 거의 모든 분야를 얻을 수 (A = A). 모든 깨진 문자는 지금까지 "Ã"로 시작합니다. 데이터베이스는 그래서이 특정 문자가 지금까지있어 깨진 문자의 목록은

á = á 
é = é 
í- = í 
ó = ó 
ñ = ñ 
á = Á 

가 의도 한대로 작업이 SELECT 만드는 방법의 모든 생각이다

을 사용하지 않는 스페인어입니까? (바이너리 검색 또는 그와 비슷한 것)

+0

당신이 UTF-8을 사용하고 확신을하고 결국? UTF-8로 인코딩 된 데이터를 ISO 8859-1로 해석 할 때 이러한 "깨진 문자"가있는 것 같습니다. 왜냐하면'á' 문자는 UTF-8로 0xC3A1로 인코딩 되었기 때문에 ISO 8859-1에서 'Ã'와 '¡'문자를 나타냅니다. – Gumbo

+5

나를 보지 마라. 제 일은이 데이터베이스를 수정하는 것입니다. 나는 그것을 부러 뜨리지 않았다. –

답변

5

다른 접근법, 즉 올바른 문자 세트를 얻기 위해 앞뒤로 변환하는 방법은 어떻습니까? 바이너리로 변환 한 다음 utf-8로 변환 한 다음 iso-8859-1 또는 다른 용도로 변환 할 수 있습니다. 자세한 내용은 manual을 참조하십시오.

SELECT * FROM TABLE WHERE LENGTH(name) != CHAR_LENGTH(name); 

이 멀티 바이트 문자가 포함 된 모든 행을 반환 : 당신이 필요로하는

+1

아이디어는 utf-8로 인코딩 된 db로 끝나는 것입니다. 지금 인코딩을 인코딩하는 것은 일반적으로 utf-8입니다. 하지만 분명히 db를 사용하는 응용 프로그램은 ISO8859로 해석하고있었습니다. 내가 앞뒤로 변환한다면, 나는 같은 데이터로 끝날 것이다. ... –

+0

글쎄, 앞뒤로 변환하는 것은 마술을하지 않는다. 캐릭터는 여전히 깨진다. 하지만 바이너리에서 Ã 한 문자를 찾기 위해 선택할 수 있습니다. 이제 깨진 문자를 감지 할 수있는 메커니즘이 생겼습니다. 감사. –

+0

그래, 나는보다 일반적인 방법으로 변환 메커니즘을 사용하는 방법이 있어야한다고 확신하지만 처음 언급 한 것보다 더 복잡 할 수도있다. 행복했던 솔루션을 찾았습니다. – wds

28
UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'á','á'); 
UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'ä','ä'); 
UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'é','é'); 
UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'í©','é'); 
UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'ó','ó'); 
UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'íº','ú'); 
UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'ú','ú'); 
UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'ñ','ñ'); 
UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'í‘','Ñ'); 
UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'Ã','í'); 
UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'–','–'); 
UPDATE `table_name` SET `column_name` = REPLACE(`column_name`,'’','\''); 
UPDATE `table_name` SET `column_name` = REPLACE(`column_name`,'…','...'); 
UPDATE `table_name` SET `column_name` = REPLACE(`column_name`,'–','-'); 
UPDATE `table_name` SET `column_name` = REPLACE(`column_name`,'“','"'); 
UPDATE `table_name` SET `column_name` = REPLACE(`column_name`,'â€','"'); 
UPDATE `table_name` SET `column_name` = REPLACE(`column_name`,'‘','\''); 
UPDATE `table_name` SET `column_name` = REPLACE(`column_name`,'•','-'); 
UPDATE `table_name` SET `column_name` = REPLACE(`column_name`,'‡','c'); 
UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'Â',''); 
+0

Perl과 같은 스크립팅 언어로 .sql 파일을 처리하고 "잘못된"문자를 모두 대체하는 방법은 무엇입니까? Perl에서는 다음과 같이 쉽게 할 수 있습니다. $ content = ~ s/á/á/g; 나머지 문자들에 대해서도 같은 문장을 반복하십시오. $ content는 전체 파일을 저장하는 문자열입니다. –

+1

완전히 다른 캐릭터 세트를 가지고 있었지만 Adam Lynch의 트릭 (http://stackoverflow.com/a/6112241/807104)을 사용하여 수동으로 모든 캐릭터를 수행해야했지만, 쿼리를 409 번 실행해야했습니다. '그래서 나에게는 좋은 일인가.' –

+0

더 포괄적 인 방법을 사용하여 몇 주 동안 다른 데이터 소스의 테이블을 업데이트하려고 시도했지만 훨씬 쉬운 방법입니다. 감사! 오늘이 정보를 모으고 있었습니까? – hellodaniel

10

SELECT 문은 다음과 같다.

name은 이상한 문자가있는 필드/필드로 간주됩니다. *

9

답변 해 주셔서 감사합니다.

내 테이블을 수정하여 전체 변경 사항 목록을 공유하려고했습니다. 당신은 몇 가지 문자를 잊을 수 있기 때문에

update `table` set `field` = replace(`field` ,'É','É'); 
update `table` set `field` = replace(`field` ,'“','"'); 
update `table` set `field` = replace(`field` ,'â€','"'); 
update `table` set `field` = replace(`field` ,'Ç','Ç'); 
update `table` set `field` = replace(`field` ,'Ã','Ã'); 
//Edit by slash4 
update `table` set `field` = replace(`field` ,'Ã ','À'); 
update `table` set `field` = replace(`field` ,'ú','ú'); 
update `table` set `field` = replace(`field` ,'•','-'); 
update `table` set `field` = replace(`field` ,'Ø','Ø'); 
update `table` set `field` = replace(`field` ,'õ','õ'); 
-- The next one appears to be missing a character. But which one? 
update `table` set `field` = replace(`field` ,'í','í'); 
update `table` set `field` = replace(`field` ,'â','â'); 
update `table` set `field` = replace(`field` ,'ã','ã'); 
update `table` set `field` = replace(`field` ,'ê','ê'); 
update `table` set `field` = replace(`field` ,'á','á'); 
update `table` set `field` = replace(`field` ,'é','é'); 
update `table` set `field` = replace(`field` ,'ó','ó'); 
update `table` set `field` = replace(`field` ,'–','–'); 
update `table` set `field` = replace(`field` ,'ç','ç'); 
update `table` set `field` = replace(`field` ,'ª','ª'); 
update `table` set `field` = replace(`field` ,'º','º'); 
update `table` set `field` = replace(`field` ,'à','à'); 
update `table` set `field` = replace(`field` ,'ç','ç'); 
update `table` set `field` = replace(`field` ,'ã','ã'); 
update `table` set `field` = replace(`field` ,'á','á'); 
update `table` set `field` = replace(`field` ,'â','â'); 
update `table` set `field` = replace(`field` ,'é','é'); 
update `table` set `field` = replace(`field` ,'í','í'); 
update `table` set `field` = replace(`field` ,'õ','õ'); 
update `table` set `field` = replace(`field` ,'ú','ú'); 
update `table` set `field` = replace(`field` ,'ç','ç'); 
update `table` set `field` = replace(`field` ,'Á','Á'); 
update `table` set `field` = replace(`field` ,'Â','Â'); 
update `table` set `field` = replace(`field` ,'É','É'); 
update `table` set `field` = replace(`field` ,'Í','Í'); 
update `table` set `field` = replace(`field` ,'Õ','Õ'); 
update `table` set `field` = replace(`field` ,'Ú','Ú'); 
update `table` set `field` = replace(`field` ,'Ç','Ç'); 
update `table` set `field` = replace(`field` ,'Ã','Ã'); 
update `table` set `field` = replace(`field` ,'À','À'); 
update `table` set `field` = replace(`field` ,'Ê','Ê'); 
update `table` set `field` = replace(`field` ,'Ó','Ó'); 
update `table` set `field` = replace(`field` ,'Ô','Ô'); 
update `table` set `field` = replace(`field` ,'Ü','Ü'); 
update `table` set `field` = replace(`field` ,'ã','ã'); 
update `table` set `field` = replace(`field` ,'à','à'); 
update `table` set `field` = replace(`field` ,'ê','ê'); 
update `table` set `field` = replace(`field` ,'ó','ó'); 
update `table` set `field` = replace(`field` ,'ô','ô'); 
update `table` set `field` = replace(`field` ,'ü','ü'); 
update `table` set `field` = replace(`field` ,'&','&'); 
update `table` set `field` = replace(`field` ,'>','>'); 
update `table` set `field` = replace(`field` ,'&lt;','<'); 
update `table` set `field` = replace(`field` ,'&circ;','ˆ'); 
update `table` set `field` = replace(`field` ,'&tilde;','˜'); 
update `table` set `field` = replace(`field` ,'&uml;','¨'); 
update `table` set `field` = replace(`field` ,'&cute;','´'); 
update `table` set `field` = replace(`field` ,'&cedil;','¸'); 
update `table` set `field` = replace(`field` ,'&quot;','"'); 
update `table` set `field` = replace(`field` ,'&ldquo;','“'); 
update `table` set `field` = replace(`field` ,'&rdquo;','”'); 
update `table` set `field` = replace(`field` ,'&lsquo;','‘'); 
update `table` set `field` = replace(`field` ,'&rsquo;','’'); 
update `table` set `field` = replace(`field` ,'&lsaquo;','‹'); 
update `table` set `field` = replace(`field` ,'&rsaquo;','›'); 
update `table` set `field` = replace(`field` ,'&laquo;','«'); 
update `table` set `field` = replace(`field` ,'&raquo;','»'); 
update `table` set `field` = replace(`field` ,'&ordm;','º'); 
update `table` set `field` = replace(`field` ,'&ordf;','ª'); 
update `table` set `field` = replace(`field` ,'&ndash;','–'); 
update `table` set `field` = replace(`field` ,'&mdash;','—'); 
update `table` set `field` = replace(`field` ,'&macr;','¯'); 
update `table` set `field` = replace(`field` ,'&hellip;','…'); 
update `table` set `field` = replace(`field` ,'&brvbar;','¦'); 
update `table` set `field` = replace(`field` ,'&bull;','•'); 
update `table` set `field` = replace(`field` ,'&para;','¶'); 
update `table` set `field` = replace(`field` ,'&sect;','§'); 
update `table` set `field` = replace(`field` ,'&sup1;','¹'); 
update `table` set `field` = replace(`field` ,'&sup2;','²'); 
update `table` set `field` = replace(`field` ,'&sup3;','³'); 
update `table` set `field` = replace(`field` ,'&frac12;','½'); 
update `table` set `field` = replace(`field` ,'&frac14;','¼'); 
update `table` set `field` = replace(`field` ,'&frac34;','¾'); 
update `table` set `field` = replace(`field` ,'&#8539;','⅛'); 
update `table` set `field` = replace(`field` ,'&#8540;','⅜'); 
update `table` set `field` = replace(`field` ,'&#8541;','⅝'); 
update `table` set `field` = replace(`field` ,'&#8542;','⅞'); 
update `table` set `field` = replace(`field` ,'&gt;','>'); 
update `table` set `field` = replace(`field` ,'&lt;','<'); 
update `table` set `field` = replace(`field` ,'&plusmn;','±'); 
update `table` set `field` = replace(`field` ,'&minus;','−'); 
update `table` set `field` = replace(`field` ,'&times;','×'); 
update `table` set `field` = replace(`field` ,'&divide;','÷'); 
update `table` set `field` = replace(`field` ,'&lowast;','∗'); 
update `table` set `field` = replace(`field` ,'&frasl;','⁄'); 
update `table` set `field` = replace(`field` ,'&permil;','‰'); 
update `table` set `field` = replace(`field` ,'&int;','∫'); 
update `table` set `field` = replace(`field` ,'&sum;','∑'); 
update `table` set `field` = replace(`field` ,'&prod;','∏'); 
update `table` set `field` = replace(`field` ,'&radic;','√'); 
update `table` set `field` = replace(`field` ,'&infin;','∞'); 
update `table` set `field` = replace(`field` ,'&asymp;','≈'); 
update `table` set `field` = replace(`field` ,'&cong;','≅'); 
update `table` set `field` = replace(`field` ,'&prop;','∝'); 
update `table` set `field` = replace(`field` ,'&equiv;','≡'); 
update `table` set `field` = replace(`field` ,'&ne;','≠'); 
update `table` set `field` = replace(`field` ,'&le;','≤'); 
update `table` set `field` = replace(`field` ,'&ge;','≥'); 
update `table` set `field` = replace(`field` ,'&there4;','∴'); 
update `table` set `field` = replace(`field` ,'&sdot;','⋅'); 
update `table` set `field` = replace(`field` ,'&middot;','·'); 
update `table` set `field` = replace(`field` ,'&part;','∂'); 
update `table` set `field` = replace(`field` ,'&image;','ℑ'); 
update `table` set `field` = replace(`field` ,'&real;','ℜ'); 
update `table` set `field` = replace(`field` ,'&prime;','′'); 
update `table` set `field` = replace(`field` ,'&Prime;','″'); 
update `table` set `field` = replace(`field` ,'&deg;','°'); 
update `table` set `field` = replace(`field` ,'&ang;','∠'); 
update `table` set `field` = replace(`field` ,'&perp;','⊥'); 
update `table` set `field` = replace(`field` ,'&nabla;','∇'); 
update `table` set `field` = replace(`field` ,'&oplus;','⊕'); 
update `table` set `field` = replace(`field` ,'&otimes;','⊗'); 
update `table` set `field` = replace(`field` ,'&alefsym;','ℵ'); 
update `table` set `field` = replace(`field` ,'&oslash;','ø'); 
update `table` set `field` = replace(`field` ,'&Oslash;','Ø'); 
update `table` set `field` = replace(`field` ,'&isin;','∈'); 
update `table` set `field` = replace(`field` ,'&notin;','∉'); 
update `table` set `field` = replace(`field` ,'&cap;','∩'); 
update `table` set `field` = replace(`field` ,'&cup;','∪'); 
update `table` set `field` = replace(`field` ,'&sub;','⊂'); 
update `table` set `field` = replace(`field` ,'&sup;','⊃'); 
update `table` set `field` = replace(`field` ,'&sube;','⊆'); 
update `table` set `field` = replace(`field` ,'&supe;','⊇'); 
update `table` set `field` = replace(`field` ,'&exist;','∃'); 
update `table` set `field` = replace(`field` ,'&forall;','∀'); 
update `table` set `field` = replace(`field` ,'&empty;','∅'); 
update `table` set `field` = replace(`field` ,'&not;','¬'); 
update `table` set `field` = replace(`field` ,'&and;','∧'); 
update `table` set `field` = replace(`field` ,'&or;','∨'); 
update `table` set `field` = replace(`field` ,'&crarr;','↵'); 
+0

그것이 저에게 효과가있는 유일한 해결책이었습니다! 이진 파일은 SELECT에서도 작동하지 않습니다. 고맙습니다! – Lennon

10

없음 텍스트 교체 보편적 인 솔루션입니다 : 그것은 또한 문자를 HTML을 디코딩 고정이 포함되어 있습니다, 라틴어 것 외에, 정말 엉망이었다. 이중 변환 된 문자에 대한 더 적합 수정은 다음과 같습니다

alter table descriptions modify name VARCHAR(2000) character set latin1; 
alter table descriptions modify name blob; 
alter table descriptions modify name VARCHAR(2000) character set utf8; 
+0

감사 m8! 이것은 나의 하루를 구했다! :-)) –

+0

지금은 완전히 작동하지 않았음에도 불구하고 발견되었습니다. '문자가있는 텍스트는 3 개의 alter table 명령 다음에 해당 문자에서 잘립니다. :-( –

+0

이 답변은 저에게 도움이되었습니다. 데이터베이스의 모든 테이블에 대해이 작업을 수행 할 클래스 컬렉션에 간단한 스크립트를 추가했습니다. 지침은 다음에서 찾을 수 있습니다. http://www.os-cms.net/ 블로그 /보기/34/Fix-utf8-broken-characters-in-mysql 만약 누군가가 유용하다고 생각한다면. – dennis

2
: 다시

  1. 변환이 같이

을 UTF8로

  • 변환 이진하기
  • 변환을 latin1에 할

    나는이 같은 문제가 있었지만 repla를 좋아하지 않았다. ce() 솔루션은 문자가 누락 될 가능성이 항상 있기 때문에 해결합니다. 나는 혼합 된 데이터 (일부는 utf8_encode() d와 일부는 아니 었음)가 4 백만 개 정도의 행과 함께 잘못 코딩 된 데이터 (á/etc 문자 포함)가있는 약 250k 레코드와 함께 약 15 개의 국제 언어 주로 유럽 언어뿐만 아니라 러시아어, 일본어 및 중국어도 포함됩니다.(팁을위한 감사 아담) 멀티 바이트 문자

    ALTER TABLE images ADD COLUMN reptitle TEXT; 
    

    복사 된 모든 데이터

    UPDATE images SET reptitle = title WHERE LENGTH(title) != CHAR_LENGTH(title) 
    

    : 나는 모든 데이터가 손실되지 않았기 때문에

    나는 열을 복제하여 시작 reptitle은 테이블의 기본 문자 세트로 생성되었으므로 이미 utf8 이었지만 이미지 테이블은 latin 소스 였기 때문에 손상된 데이터가 포함되어있었습니다. 일부는 제대로 utf8_encode() 라했던, 열 reptitle이 올바르게 인코딩 일부 데이터를 포함하고, 일부는 (멀티 바이트 문자가 포함 된 모든 값을 손상. 그래서 다윗의 끝 ...

    ALTER TABLE images MODIFY reptitle TEXT character set latin1; 
    ALTER TABLE images MODIFY reptitle BLOB; 
    ALTER TABLE images MODIFY reptitle TEXT character set utf8; 
    

    중간 단계는 할 수있다이것은 잘못 인코딩 된 모든 데이터를 수정하는 효과가 있었지만 (이전에는 'étudiantes'등이되었지만) 이전에는 올바르지 않은 데이터가 첫 번째 멀티 바이트 문자 ('Lapin de Pâques'는 'Lapin de P'가되었습니다.) 왜 잘림을 모르지만 일회용 열에 있으므로 상관하지 않습니다. 잘린 데이터는 같은 CHAR_LENGTH 및 LENGTH를 제공합니다 무 (μ)가 없으므로 값 너무 쉽게 쿼리를 나머지 LTI 바이트 문자 ... 그냥 여분의 열 또한

    ALTER TABLE images DROP COLUMN reptitle 
    

    내가 PHP를 사용하기 때문에 (확인을 드롭이 몇 나를 난처하게했던 물론 그런

    UPDATE images SET title = reptitle WHERE LENGTH(reptitle)!=CHAR_LENGTH(reptitle) 
    

    시간 그래서 내가 모든 스크립트 파일은 BOM없이 UTF8 (입니다) 여기 언급 거라고 생각) 그리고 당신이 사용하는 :

    mysql_set_charset('utf8', $connection); 
    

    잇함으로써 해결할 수 ... 완벽하게 수리 데이터, 모든 언어 :

  • +0

    감사합니다. 칼럼을 추가 한 다음 칼럼을 복사하는 것이 좋은 방법이며, 이렇게 배치하면 도움이됩니다. – cincodenada

    0

    TEXTBLOB이 동일하므로 중간 단계가 필요하지 않을 수 있습니다.

    이것은 잘못 인코딩 된 모든 데이터를 수정하는 효과가 있었지만 이전에 올바른 데이터는 첫 번째 멀티 바이트 문자에서 잘 렸습니다.

    0

    전체 데이터베이스에는 a nice script to automate the conversion process이 있습니다. MySQL의 UTF-8 구현은 UTF-8 chars를 3 바이트까지만 지원하기 때문에 불완전하다는 것을 아는 것도 유용합니다. 해결 방법은 MySQL 5.5.3에서 소개 된 utf8mb4 charset을 사용하는 것입니다.

    38

    나는

    UPDATE wp_zcs9ck_posts_copy SET post_title = 
        CONVERT(BINARY CONVERT(post_title USING latin1) USING utf8); 
    

    완벽한 솔루션 고정 : http://jonisalonen.com/2012/fixing-doubly-utf-8-encoded-text-in-mysql/ 모든 깨진 문자가 하나 개의 쿼리에서 당신이 할 수있는 업데이트하려면

    +4

    최상의 솔루션! 고마워. – nikoskip

    +1

    저도 잘 도와 줘서 고마워요! – Peter

    +1

    데이터베이스를 먼저 백업하십시오. 이렇게하면 내 wp_posts -> post_content 필드의 첫 번째 절반 문장 만 삭제됩니다! –

    2
    라울 아빌라 솔라노 외에도

    과의 acseven 대답 :

    update `table` set field = replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(field,'&uuml;','ü'),'&ocirc;','ô'),'&oacute;','ó'),'&ecirc;','ê'),'&agrave;','à'),'&atilde;','ã'),'&Uuml;','Ü'),'&Ocirc;','Ô'),'&Oacute;','Ó'),'&Ecirc;','Ê'),'&Agrave;','À'),'&Atilde;','Ã'),'&Ccedil;','Ç'),'&Uacute;','Ú'),'&Otilde;','Õ'),'&Iacute;','Í'),'&Iacute;','Í'),'&Eacute;','É'),'&Acirc;','Â'),'&Aacute;','Á'),'&ccedil;','ç'),'&uacute;','ú'),'&otilde;','õ'),'&iacute;','í'),'&eacute;','é'),'&acirc;','â'),'&aacute;','á'),'&atilde;','ã'),'&ccedil;','ç'),'à ','à'),'à ','à'),'º','º'),'ª','ª'),'ç','ç'),'–','–'),'ó','ó'),'é','é'),'á','á'),'ê','ê'),'ã','ã'),'â','â'),'í','í'),'õ','õ'),'Ø','Ø'),'•','-'),'ú','ú'),'à ','À'),'Ã','Ã'),'Ç','Ç'),'â€','"'),'“','"'),'É','É'); 
    
    2

    이것은 또한 당신이 제대로 인코딩 UTF8로하고 잘못 인코딩 된 문자와 행이있을 수있는 몇 가지 이탈리아어 문자

    UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'á','á'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'ä','ä'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'é','é'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'í©','é'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'ó','ó'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'íº','ú'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'ú','ú'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'ñ','ñ'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'í‘','Ñ'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'Ã','í'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'–','–'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name`,'’','\''); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name`,'…','...'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name`,'–','-'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name`,'“','"'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name`,'â€','"'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name`,'‘','\''); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name`,'•','-'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name`,'‡','c'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'Â',''); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'í ','à'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'í¨','è'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'íˆ','È'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'€','€'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'eÌ€','è'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'í²','ò'); 
    UPDATE `table_name` SET `column_name` = REPLACE(`column_name` ,'í¹','ù'); 
    
    0

    에 내 문제를 해결 여기를 발견했습니다. 이 경우 "CONVERT (이진 변환 (post_title USING latin1) USING utf8)"은 일부 필드를 자릅니다.

    나는 이런 식

    update `table` set `name` = replace(`name` ,CONVERT(BINARY "ä" USING latin1),'ä'); 
    update `table` set `name` = replace(`name` ,CONVERT(BINARY "ö" USING latin1),'ö'); 
    update `table` set `name` = replace(`name` ,CONVERT(BINARY "ü" USING latin1),'ü'); 
    update `table` set `name` = replace(`name` ,CONVERT(BINARY "Ä" USING latin1),'Ä'); 
    update `table` set `name` = replace(`name` ,CONVERT(BINARY "Ö" USING latin1),'Ö'); 
    update `table` set `name` = replace(`name` ,CONVERT(BINARY "Ü" USING latin1),'Ü'); 
    update `table` set `name` = replace(`name` ,CONVERT(BINARY "ß" USING latin1),'ß'); 
    
    관련 문제