2009-08-29 6 views
2

방금 ​​거대한 MySQL 데이터베이스를 가져 왔습니다. 대부분의 필드는 latin1_swedish_ci이며 손상된 문자열이 많이 포함되어 있습니다.데이터베이스에서 손상된 문자 복구하기

Cavit Yü¯Â¿Â½r�kl� 대신에 Cavit Yürüklü

나는 조금이라도 알고있는 모든 것으로 PHP를 사용하여 이러한 손상을 수정하는 해결책을 찾으려고 노력 해왔다. utf8_ (en | de) 코드 iconv로 실패했습니다.

도와주세요! 그것은 부패의 짐입니다.

업데이트 : 라틴어 1로 다시 가져 왔으며 이제는 위의 Cavit Y�r�kl�에 대해 가져 왔습니다. 그래서 확실히 다르지만 SQL 자체가 손상된 것 같습니다.

+0

"방금 거대한 MySQL 데이터베이스를 가져 왔습니다." 더 구체적으로 설명해 주시겠습니까? 어디서 구 했니? 덤프 파일 이었어? 덤프 파일을 가지고있는 데이터베이스 (실제로는 그랬다면)는 어떤 인코딩을 사용 했습니까? –

+0

db 덤프에 손상된 문자가 이미 있습니다. 그것은 웹 사이트의 판매 후에 나에게 주어진 유일한 나머지 덤프입니다. 라틴어 인코딩을 사용했다고 생각합니다. –

답변

1

그래, 잘못된 인코딩을 사용하고 있습니다. 문제를 해결하는 방법을 알고 싶으면 http://www.oreillynet.com/onlamp/blog/2006/01/turning_mysql_data_in_latin1_t.html을 확인하십시오. 이제 인코딩이 무엇인지, 인코딩이 원하는지 그리고 변환 할 수 있는지 알아야합니다. 또는 가져올 데이터의 인코딩과 일치하도록 db를 설정하십시오 (옵션 인 경우)

+0

알기에 좋지만 제 경우에는 모든 문자가 어떻게 든 동일한 값으로 손상되어 데이터가 복구 할 수 없다는 것이 분명했습니다. –

0

먼저 데이터베이스 덤프 사본을 작성한 다음 iconv를 사용하려고합니다. 여러분이 시도 할 수있는 많은 문자 인코딩 조합이 있습니다 - 한때 손상된 러시아어 키릴 문자 데이터를 수정해야했습니다 - 결과적으로 'UTF-8 // TRANSLIT'의 출력 값을 지정하는 것이 었습니다. 당신은 할 수 있지만 원본을 유지하는 것을 잊지 마십시오.

관련 문제