트위터에서 트윗을 처리하고 데이터베이스 (MySQL)에 저장하는 중입니다.자바에서 문자열을 처리하는 동안 트위터 이모티콘 문자를 피하는 방법
내 프로세스가 완벽하게 실행해야하지만 때로는이 같은 오류 얻을 : 하나의
2012-08-31 08:11:23,303 WARN org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL Error: 1366, SQLState: HY000
2012-08-31 08:11:23,304 ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Incorrect string value: '\xF0\x9F\x98\x9D #...' for column 'twe_text' at row 1
내가 찾아 내 로그에 문제가있는 트윗을 찾고 다음
2012-08-31 08:11:22,971 INFO com.myapp.TweetLoaderJob - Text for tweet 241175722096480256: RT @totallytoyosi_: My go
odies, my goodies, not your goodies <U+1F61D> #m&ms #sweeties #goodies #food @ The Ritzy Cinema Café, Brixton htt ...
을 그리고 마지막으로 지옥이 무엇인지보고, 트위터가 보내는 이모티콘임을 알게되었습니다. as-is
나는이 speci만을보고 디버깅했습니다. fic 짹짹 및 내 일식이 인코딩 문자를 인식하지 않는 것 같습니다. 그래서 질문은, 어떻게이 예외를 처리 할 수 있습니까? 내 MySQL 데이터베이스 구성을 찾았지만 인코딩을 변경할 수 없습니다 (요구 사항). 따라서 이러한 종류의 트윗을 관리하거나 복잡한 문자를 사용하지 않는 것이 좋습니다.
그러나 Java가 인식하지 못하면 어떻게해야합니까?
방금 시도했지만 작동하지 않습니다 ... 내 생각에 은 enconding하지만 텍스트는 수신되지 않았습니다. –
방금 찾았습니다 :'s = s.replaceAll ("[^ \\ x00 - \\ x7f]", "");'. 그게 너에게 도움이 되겠니? – m4573r
마지막으로, 나는 더러운 해결 방법으로 문제를 해결했다. 그러나 문제를 같은 방식으로 해결한다. 단, 이모티콘 대신에 물음표가 설정된다는 점만 다르다.'new String (status.getText(). getBytes (" ISO-8859-1 ")); ' –