2010-01-10 5 views
1

질문 ... _bulk_docs API를 통해 CouchDB에 데이터를 추가하려고합니다. 대부분이 작업을 수행하지만 특수 문자가 포함 된 JSON 값 (예 : 특정 스페인어 또는 프랑스어 문자가 내 데이터에 존재 함)으로 인해 CouchDB에 의해 제공된 "잘못된 JSON"오류가 발생하고 데이터가 거부됩니다.CouchDB 및 특수 문자

제대로 작동하려면 설정해야 할 항목이 확실하지 않습니다. 어떤 제안? CouchDB는 데이터를 올바로 가져 오는 것 같습니다 (적어도 로그 파일에서는 올바르게 보입니다). 그러나 특수 문자를 제거하지 않으면 처리되지 않습니다.

+0

CouchDB는 유니 코드 문자를 지원하므로 특수 문자에는 문제가 없어야합니다. CouchDB와 어떤 라이브러리/툴을 사용하고 계십니까? 문제가있을 수 있습니다. – filippo

+0

지금 자바 서블릿에서 URL을 호출하고 있습니다. 내 CouchDB 데이터베이스를 가리키는 URL 객체를 만들고 내 HttpURLConnection의 Content-type을 "text/plain; charset = utf-8"로 설정합니다. 또한 Jackson (writeValueAsString() 메서드 사용)을 사용하여 CouchDB로 전송되는 JSON 문자열을 만듭니다. – nkp

답변

0

내용 유형은 내가 당신의 JSON 파서에 익숙하지 않은거야 응용 프로그램/JSON이 아닌 시험/일반

수 있지만 그것이 당신의 HTTP 클라이언트 라이브러리를 UTF-8로 설정해서, UTF-8입니다 확인해야한다 귀하의 json 시리얼 라이저가 유니 코드를 출력하고있는 것은 아닙니다.

0

나는이 같은 일을 문제를 디버깅하려고 할 것 :

  1. 컴퓨터에 HTTP를 이해하는 패킷 스니퍼 (예 : wireshark)를 설치하고 포트 5984
  2. 로 전송 패키지를 캡처 시작을

    컬 -X POST가 test.js 일부가 할 포함 http://localhost:6984/testdb/_bulk_docs

    [email protected] : 명령 줄에서 컬을 사용하여 문서를 작성 특수 문자가있는 문자. 그리고 예상대로 작동하는지 확인하십시오.

  3. 자바 라이브러리와 동일하게 수행하고 2 가지 경우에 http 헤더와 요청 본문의 차이점을 확인하십시오.

참고 : 기본적으로 curl은 content-type : application/x-www-form-urlencoded와 함께 데이터를 보내야하는데 이는 문제 일 수 있지만 잘 모르기 때문에 헤더를 확인하십시오.

희망이 도움이 될 수 있습니다.

+0

감사합니다. 이것은 모두 도움이되었습니다 ... 지금 작동 중입니다. Jetty/Cometd, CouchDB 및 Jackson과주고받는 JQuery 기반 클라이언트 웹 앱 – nkp