2009-04-01 3 views
0

mojibake을 실행하지 않고 HTML 양식으로 파일을 업로드하는 방법은 무엇입니까? 내가 설정 한 파일 업로드 mojibake

  1. 파일 필드
  2. 필요한 텍스트 필드
  3. 받아들이는 텍스트 필드에 일본어 문자 :

    나는 세 개의 필드가있는 양식을 가지고 내 HTML 양식은 enctype='multipart/form-data'입니다. 그러나 필수 입력란이 없어서 양식 제출이 실패하면 동일한 페이지로 리디렉션되지만 제 2 텍스트 필드 (Jap. chars를 허용하는 텍스트 필드)는 이미 mojibaked 상태입니다.

    그러나 내가 enctype을 제거하거나 다른 것으로 변경하고 양식 제출이 실패하면 일본어 문자가 그대로 표시됩니다 (떡 없음). 문제가 있으면 성공하면 업로드 된 파일을 읽을 수 없습니다.

    이 문제를 해결하는 방법은 무엇입니까 ??

답변

1

파일 업로드 양식으로 mojibake의 영향을받지 않는 것으로 보이는 appfuse (appfuse.org)를 리버스 엔지니어링하여 알아 냈습니다.

서버 측에서 charset 인코딩을 UTF-8로 설정하여 해결했습니다 (스프링의 org.springframework.web.filter.CharacterEncodingFilter 사용). 따라서, multipart-/form-data가 실제로 문자 인코딩을 망칠 것이라고 추측합니다 (또는 최소한 Java의 경우).

+0

Servlet/JSP에서 게시 된 요청 본문 (www-encoded 또는 form-data)을 읽는 문자 인코딩을 설정하는 것은 성가 시며 비표준입니다. 불행히도 ISO-8859-1의 기본값은 점점 더 오래되어 가고 있습니다. – bobince

1

글자 깨짐 (일본어 문자의 난도질 표시) 두 가지 원인이 있습니다 :

  1. 페이지의 데이터가 올바른 문자 인코딩에,하지만 브라우저는 그것을 인식하지 못합니다.

  2. 페이지의 일부 문자가 잘못된 인코딩을 사용합니다 (서버가 잘못된 인코딩으로 작성했습니다).

페이지의 다른 문자 (양식 외부)가 올바르게 표시되면 서버에서 끊어진 출력이 생성됩니다.

브라우저 메뉴에서 다른 인코딩을 수동으로 설정하여 모든 문제가 해결되면 페이지 인코딩이 올바르게 지정되지 않습니다.

어떤 종류의 콘텐츠 형식 헤더와 HTML 메타 태그를 사용합니까?

+0

html에는 이미 가 있습니다. 또한 firefox의 Tamper Data 플러그인을 사용하면 제출 된 POSTDATA가 이미 깨져있는 것을 볼 수 있습니다 (enctype = multipart/form-data). 그래서 우리 서버에 도달하기 전에 이미 망가 졌을 것입니다. –

+0

내 인코딩이 올바르지 않습니까? –

+0

은 공개적으로 액세스 할 수있는 페이지입니까? 우리 좀 봐도 될까요? – Thilo