2011-01-27 6 views
0

우리는 java ee 웹 프로젝트를 빌드하고 데이터를 저장하기 위해 jdbc를 사용합니다. 문제는 äöü와 같은 독일어 'Umlaute'가 사용 중이며 올바르게 mysql 데이터베이스에 저장되어 있다는 것입니다. 우리는 이유를 모르겠지만, 브라우저에서 해당 문자 대신Java EE 웹 프로젝트 및 문자 인코딩

ö� 

같은 이상한 물건을 표시 부러. 올바르게 설정되어

JDBC character encoding

그리고 HTML 페이지의 인코딩 :

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 

모든 아이디어를 어떻게 은 이미이 질문에 설명처럼 JDBC 연결의 인코딩을 설정하려고했습니다 고쳐?


업데이트

connection.prepareStatement("SET CHARACTER SET utf8").execute(); 

움라우트 동작하지 않을 수 있습니다. 는 "우리는 이유를 모르겠지만, 브라우저에서 그 문자가 깨진"

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

도, 아무것도 변경되지 않습니다

답변

1

에 메타 태그를 변경

글쎄, 그게 제일 먼저 찾아야 할거야. Wireshark를 통해 (당신이 (로깅) 데이터베이스에서 그것을 가져으로

  • 당신이 (로깅) 페이지에 주입 와이어에
  • : 당신은 모든 단계에서 데이터를 추적한다)

로그 할 때 문자열을 구성하는 유니 코드 문자를 정수로 기록하십시오. 그냥 문자열의 각 문자를 정수로 캐스팅하고 로그에 남기십시오. 그것은 원시적이지만, 당신이 알아야 할 것을 알려줄 것입니다.

와이어를 보면 물론 문자가 아닌 바이트이 표시됩니다. 선택한 인코딩에 대해 예상되는 바이트 수를 계산하고 실제로 네트워크를 통해 들어오는 내용을 확인해야합니다.

인코딩을 HTML로 지정했는데, ISO 라틴어 1로 원하는 페이지를 생성하고 있다고 말 했나요? 이는 콘텐츠 형식 헤더 을 텍스트에서 바이트로 실제 변환하는 작업을 담당 할 가능성이 큽니다.

또한 UTF-8 대신 ISO Latin 1을 사용하는 이유가 있습니까? 왜 당신은 의도적으로 자신을 제한하고 싶습니까? (ISO 라틴어 1은 유니 코드 문자의 전체 범위 대신 유니 코드의 처음 256 문자 만 처리 할 수 ​​있으며 UTF-8은 모든 것을 처리 할 수 ​​있으며 ASCII와 마찬가지로 효율적입니다.)

+0

글쎄, 그럼 나는 로깅과 함께. 표준 서블릿과 몇 개의 태그를 사용하고 있습니다. – phineas

+0

이렇게되면 문자가 데이터베이스에서 검색된 후 바로 깨집니다. – phineas

+0

@phineas : 좋습니다. 다음 단계는 데이터베이스에서 데이터를 가져 와서 같은 방식으로 기록하려고하는 * console * 응용 프로그램을 작성하는 것입니다. 그렇게하면 webapp 부분을 올바르게 처리 할 필요가 없습니다. 콘솔 앱 인 IMO를 사용하면 훨씬 쉽게 작업 할 수 있습니다. –