2016-06-01 2 views
0

데이터베이스의 일부 데이터가 잘못된 인코딩으로 삽입되었습니다. 잘못 인코딩 된 유니 코드 문자열을 수정하십시오.

내가 데이터를 가져오고 그것을 덤프

, 나는 다음과 같은 얻을 출력 :

$VAR1 = "\x{fffd}U/mL" 

어떻게 그것을 해결하기 위해? Perl에서 decode_utf8, decode_utf8을 시도했습니다.

+4

이 문자열이 무엇이 었는지 알고 있습니까? 'U + FFFD'는 * 치환 문자 * 위스가 잘못된 유니 코드 문자 대신에 사용됩니다. – Borodin

+0

예 : 입력 및 출력 문자가 필요합니다. – ssr1012

+2

너무 늦었을 수 있습니다. 정보가 손실 될 수 있습니다. 1) 어떤 데이터베이스입니까? 2)'Use Data :: Dumper;에서 무엇을 얻습니까? 로컬 $ 데이터 :: 덤퍼 :: Useqq = 1; print (Dumper ($ row));'데이터베이스에서이 값을 가져올 때? 이 디버깅을 할 때 mysql_enable_utf8 옵션을 사용하지 않았는지 확인하십시오. – ikegami

답변

2

decode_utf8은 올바른 옥텟이 있다고 가정합니다. 잘못된 데이터로 시작하면 문제가 해결되지 않습니다. 일반적으로 이것은 매우 많은 방법으로 데이터가 엉망이 될 수 있기 때문에 고도로 자동화 할 수없는 것입니다.

관련 문제