2014-04-11 2 views
0

최대 500 자의 TextArea에서 값을 가져 오려고합니다. 그러나 각 특수 문자가 4 문자로 대체되는 발음 구별 부호가있는 문자에 문제가 있습니다. 따라서 프랑스어 문자가 포함 된 500 자의 텍스트를 제공하면 데이터베이스에 지속되는 데 필요한 실제 길이 (필드 길이는 500)가 500자를 초과하고 트랜잭션이 실패합니다.분음 부호가있는 문자는 ascii로 변환됩니다.

몇 가지 예 :

  • oubliée는
  • désiriez이 siriez dà©으로 변환됩니다 oublià© 전자로 변환됩니다

내가 방법을 인출하는 잘못된 또는 일을하고 있다면 누군가가 나를 수정할 수 있습니다 Java 코드에서 사용자가 입력 한 실제 텍스트?

양식 정의 :

<form id="contForm" method="post" name="formCont" 
    action="/wps/customforms/ParticipationRequest" 
    enctype="multipart/form-data"> 

가 텍스트 영역 정의 :

<div class="spec textarea small" id="inpSpec"> 
    <label class="label" for="inp"><%=content.getLangMap().get(langcode)%> 
     <span class="required">*</span> <span class="hint"></span> </label> 
    <div class="value"> 
     <div class="control"> 
      <textarea cols="5" rows="3" 
       id="<%=String.valueOf(content.getId())%>" 
       name="<%=String.valueOf(content.getId())%>"></textarea> 
     </div> 
    </div> 
</div> 

서블릿 스 니펫 :

List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); 
String description = null; 
for (FileItem item : items) { 
     if (item.isFormField()) { 
       if (item.getFieldName().equalsIgnoreCase(String.valueOf(content.getId()))) { 

         // Here I get invalid data for french characters. 
         description = item.getString()); 
        } 
     } 
} 

추가 정보 :

나는 다음과 같은 코드 조각을 사용하고 있습니다
  • 응용 프로그램 사용 서버 : 내가 UTF-8, ISO-8951와 같은 요청의 문자 인코딩 유형을 설정하려고
  • 리눅스
  • ...하지만 작동하지 않는 것 :
  • 플랫폼이었다.

답변

0

utf-8에서 127보다 큰 모든 문자는 두 개 이상의 바이트로 이스케이프됩니다.

  • é을 보여주는 텍스트가 UTF-8 인코딩으로 저장 일부 감자 악센트 문자의 전형적인 나중에 라틴어-1과 같이 (일명 이소 : 당신은 데이터 기록기와 데이터 작가 사이의 인코딩 불일치를 갖고있는 것 같다 8859-1) : "원시"문자)
  • 로 표시하지만 만약 그 차례로 é이 UTF-8로 저장하면 UTF-8로 저장 라틴어-1의 é (16 진수 E9)는 C3 A9 (= é이된다 é이 원시 문자 또는 라틴 인코딩으로 표시되는 C3 83 C2 A9이됩니다.

응용 프로그램 서버를 모르지만 utf-8로 작성 될 수 있지만 일반 iso-8859/latin 텍스트로 읽을 수있는 부분을 찾으십시오.

+0

우리는 WAS (Websphere Application Server) – Sai

관련 문제