2011-03-21 3 views
3

인코딩 문제가 있습니다 - 데이터가 MySQL 테이블에 저장되어 있습니다. 몇 가지 일을하는 동안 내 테이블에있는 내 기둥 중 하나가 일부 oblesks 및 부정 부호를 수집했습니다. 또는 인코딩에 따라 물음표가있는 일반적인 다이아몬드. 각 행을 수동으로 변경하는 대신 DB에서 문자를 찾아 파괴하는 빠른 방법이 있습니까?인코딩 된 문자가 내 MySQL에서 끝났습니다

저는 브라우저 설정과 UTF-8, Western 1252 및 ISO-8859-1을 사용하여 게임을 해봤습니다. 데이터가 이전에 인코딩 된 방식에 만족했습니다. 단지 부적절하게 인코딩 된 Whitvers를 DB에서 제거하려고합니다. 모든 문자를 가져 와서 바꾸기 위해 빠른 PHP 스크립트를 작성했지만 문자가 무엇인지 파악할 수 없습니다. 어떤 아이디어? UTF-8 ¬†

답변

1

에서 볼 수 있듯이 여기

당신이 실제로이 작업을 수행 할 수 있지만

UPDATE `table` SET column = replace(column, REGEXP '[\x00-\x1F\x80-\xFF]', ''); 

확실히 당신이 선택 처음으로 이것을 실행 만들거나 할 경우 내가 모르는 문자입니다 임시 샌드 박스 DB에 저장합니다. 이것이 mysql에서 합법적인지 모르겠다.

나는 이것을 할 수 있지만 데이터베이스를 변경해야하는 타사 정규식 라이브러리가 있다는 것을 알고 있습니다. 나는 이것이 어떻게 작동하는지 모른다.

편집

당신은 당신이 할 수있는 작은 PHP 스크립트를 작성하는 것이 더 낫다. 위의 정규식은 가비지 문자를 제거합니다.

$data = preg_replace_all('/[\x00-\x1F\x80-\xFF]/', '', $data); 

다시 한번, 그것은 전에 분명 아니었다면 : 나는 실제로 무슨 일이 일어날 지 아무 생각이 없기 때문에 맹목적 MY 위의 SQL 문에 붙여 넣을 수 없습니다 마십시오.

+0

마법처럼 일했다 - 감사합니다! – thebarless

관련 문제