2011-06-14 6 views
0

MYSQL 데이터베이스는 utf-8 형식이지만 데이터베이스 내의 문자는 ISO-8859-1 (ISO-8859-1 문자열은 utf-8에 저장 됨)입니다. 코드로 시도했지만 예를 들어 코드 만 변환했습니다. ü ~ ¼). 아무도 거기 솔루션을 가지고 있습니까 ??문제가있는 문자

+0

가장 쉬운 방법은 지정된 올바른 문자 집합을 사용하여 데이터를 다시 가져 오는 것입니다. 어떻게 할 수 있니? –

+0

다시 가져올 수 없습니다 – niklas

+0

다음은 좋은 답변이 담긴 복제본입니다. [깨진 UTF8 인코딩을 수정하는 데 도움이 필요합니다] (http://stackoverflow.com/questions/1344692/i-need-help-fixing-broken-utf8-encoding)) –

답변

0

UTF-8로 설정된 데이터베이스에 ISO-8859-1 문자를 저장하려고하면 MySQL이 데이터베이스에서 바이트를 검색하여 "특수 문자"를 손상시킬 수 있습니다. ISO-8859-1보다는 UTF-8로 어셈블하십시오. 이것은 당신이 (당신이 말한에서 ISO-8859-1 문자열에서 온) 바이트를 얻을 수 있도록하고 것

ResultSet rs = ... 
byte[] b = rs.getBytes(COLUMN_NAME); 
String s = new String(b, "ISO-8859-1"); 

: 데이터를 정확하게 읽을 수있는 유일한 방법은 같은 것을 수행하는 스크립트를 사용하는 것입니다 ISO-8859-1 문자열로 다시 어셈블 할 수 있습니다. 또 다른 문제는 데이터베이스에서 문자열을 "보는"데 사용하는 것입니다. 콘솔에 잘못 저장되는 문자가 아닌 문자를 표시 할 올바른 문자 세트가없는 것은 아닙니까?

참고 : 난 그냥이 겪었 마지막 코멘트

+1

데이터베이스가 utf-8로 설정되어있는 경우 db에 저장된 문자열은 iso-8859-1입니다. – niklas

+1

방금 ​​코드를 업데이트했습니다. 바이트를 다시 어셈블 할 때 ISO-8859-1을 사용하면됩니다. String에 넣습니다. – Liv

0

후 위의 업데이트. 내 솔루션의 가장 큰 부분은 데이터베이스를 .csv로 내보내고 문제의 문자를 찾기/바꾸기입니다. 문제의 문자는 공백처럼 보이지만 셀에서 직접 찾기 매개 변수로 복사하십시오. 이 번

이루어집니다 -이 나에게 모든 아침 갔다 무엇 실종 :이 문제에

  • 저장 CSV (MS-DOS)로 파일

우수한 post

MS-DOS 소스 idea