2011-09-21 2 views
0

MongoDB에 비정상적인 문자를 삽입 할 때 문제가 발생했습니다. 다음과 같이비표준 UTF-8 문자가있는 mongoDB

문자는 다음과 같습니다 é è I I A A ... 등 기본적으로

, 주로 라틴어 국가에서 사용되는 문자.

내가 콘솔에 넣을 때 ("non-utf-8 character"라고 대답하기 때문에) 그것을 잘 만들었지 만, 그것을 컬렉션에 추가하지만, 이상한 문자들 .

내가 "Olá"라고 말하면 "Olá"로 검색되는 필드가 있지만 이상한 문자가 있으면 필드에있는 데이터를 회신합니다.

�til?

나는이 문제를 해결할 수있는 방법이 있나요 : 해당 필드에 표준 영어 chartype없는 문자의 일종이있는 경우 그러나,이 같은 표시?

Websphere Portal 서버를 사용 중이며 PortletView 파일이 UTF-8로 출력되고 서블릿이 입력 된 데이터를 처리하여 쿼리를 위해 db로 보낼 때 UTF-8로 인코딩하고 데이터를 처리합니다 DB에서 UTF-8로 검색합니다 (확실하게).

미리 감사드립니다.

+0

서블릿 필터가 잘못된 문자 인코딩을 사용하도록 요청하지 않도록 확인하십시오. 요청의 문자 인코딩을 'UTF-8'로 설정하기 전에'ServletRequest' *에서'getParameterXXX()'패밀리 중 하나를 호출함으로써 발생할 수 있습니다. –

+0

잘 DB와 서블릿 사이의 문자열 전송을 할 때 변환을 수행하고 있습니다 ... 서블릿에서 portletview로 가져올 때 문제가 될 수 있습니다 ... –

+0

그래서 'doPost ()'호출을하기 전에 다음을 수행해야한다. 'String contentType = "text/html; charset = UTF-8";' 'response.setContentType (" contentType); ' 답변으로 게시 할 수 있습니다. 곧 내 자신의 질문에 대한 답변을 게시 할 수 없기 때문에 받아 들일 것입니다. –

답변

1

서블릿 필터가 잘못된 문자 인코딩을 사용하도록 요청하지 않는지 확인하십시오. 이는 요청의 문자 인코딩을 UTF-8으로 설정하기 전에 ServletRequest에서 getParameterXXX() 패밀리 중 하나를 호출하여 발생할 수 있습니다.

servlet spec에는 기본적으로 ISO8859-1이 사용됩니다. SRV.3.9 요청 데이터 인코딩을 참조하십시오.

또한 응답에서 올바른 콘텐츠 형식 (인코딩 사용)을 사용하는지 확인하십시오. 위의 코멘트에 게시 됨 :

String contentType= "text/html;charset=UTF-8"; 
response.setContentType(contentType);