2009-09-10 4 views
0

다른 언어 (독일어, 스페인어 등)로 작동해야하는 응용 프로그램을 개발 중입니다. 응용 프로그램은 Oracle DB를 사용합니다. CRUD 비즈니스 프로세스가 있고 표준보기 (작성, 편집, 표시, 나열)가 있습니다. 특수 문자를 포함하는 레코드를 생성하고 표시하고 나열하는 데 아무런 문제가 없습니다. , ä, ö, ü 등이 있습니다. 그러나이 문자가 포함 된 항목을 편집하면 버전이 인코딩됩니다. 즉 & auml; ä & ouml 대신; ö & uuml 대신; 대신Groovy에서의 인코딩 문제

등등.

이 문제를 해결하는 방법에 대한 힌트가 있습니까?

감사합니다.

업데이트 도움 주셔서 감사합니다. 전체 시나리오를 설명합니다 :

웹 응용 프로그램을 grails (groovy on grails)로 작성했습니다. 개발을 위해 서버와 Oracle 10g로 Jetty를 사용하고 있습니다. 테스트 및 프로덕션 용 Tomcat 6.0.18 및 Oracle 10g를 사용 중입니다. Java 버전이 1.6.0_02입니다.

많은 CRUD 프로세스 (작성, 검색, 업데이트, 삭제)가 있습니다. 응용 프로그램이 다국어입니다. 즉, 문자 (글자)는 내용으로 허용되어야합니다 (예 : א, א, א, א, א, א, א, א, א, א).

조회수는 gsp로 작성되었습니다. 표준 .gsp 뷰 (생성, 편집, 표시, 나열)를 사용하고 있습니다. create, show, list에 문제가 없습니다. 즉, 작성보기 아래에이 특수 문자를 사용하여 단어를 입력하면 이 올바르게 표시되거나 나열됩니다.

이러한 문자가 포함 된 레코드를 편집 할 때 문제가 발생합니다. -let의 말 대신에 ä이 필드에 나타납니다. & auml; (이것은 ä의 html 인코딩입니다).

Config.groovy 파일에서 grails.views.gsp.encoding = "UTF-8" grails.converters.encoding = "UTF-8"

모든 :

나는 다음과 같은 설정이 있습니다. GSP 페이지에는 다음과 같은 메타 태그가 있습니다

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

모든 형태의 다음과 같은 속성이 있습니다

<g:form accept-charset="UTF-8" method="post" > 
,691을

Tomcat에서 나는 다음과 같은 설정을했다.

바람둥이는 다음 옵션과 함께 시작됩니다 : 웹에서

CATALINA_OPTS=-Dfile.encoding=UTF-8 
JAVA_OPTS="-Duser.language=de -Duser.country=DE" 

.XML은 내가 예에서 SetCharacterEncodingFilter.class 복사의 server.xml에서/WEB-INF가/클래스/필터

을 내가 설정하여 MyApplication/WEB-INF가/클래스/필터에서 다음과 같은 필터

<filter> 
    <filter-name>SetCharacterEncoding</filter-name> 
    <filter-class>filters.SetCharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
</filter> 

설정 다음 커넥터 :

<Connector port="8080" protocol="HTTP/1.1" 
      connectionTimeout="20000" 
      redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="UTF-8" /> 

시나리오는 다음과 같습니다. 서버에서 양식 편집 요청을받습니다. 서버가 DB에서 정보를 검색하고 DB가 정보를 이미 html로 인코딩 (또는 그렇게 생각하지 않음)하거나 서버가 인코딩으로 보내고 클라이언트로 인코딩하여 전송합니다.

또한 내 컨트롤러에서 서버에서 검색된 정보가 html로 인코딩되지 않았 음을 알 수 있습니다.

이 인코딩 문제에 대처하기 위해 어떤 설정을해야하는지 모르겠습니다. (많은 시간과 노력이 필요합니다).

미리 감사드립니다.

루이스

+0

을 당신이 특정 문제에 더 자세히 설명하면, 내가 더 도움을 줄 수 있습니다. "이 문자가 포함 된 항목을 편집 할 때 나는" 무엇입니까? 어떻게 편집합니까? 그것은 webui입니까? 그렇다면 utf-8도 사용하십시오. http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletRequest.html#setCharacterEncoding(java.lang.String) http://java.sun.com/javaee/ 5/docs/api/javax/servlet/ServletResponse.html # setCharacterEncoding (java.lang.문자열) 두 설정을 모두 컨테이너에서 구성 할 수도 있습니다. – andersonbd1

답변

1

이미 모든 설정이 완료되었습니다. 설정 한 결과 :

grails.views.default.codec="html" // none, html, base64 

아무 것도 표시되지 않고 문제가 해결되었습니다.

내 문제는 여기에 이미 노출 :

http://www.groovy-forum.de/read.php?3,5008,5630 자세한 내용은 다음을 참조하십시오

http://jira.codehaus.org/browse/GRAILS-1827 

루이스

1

인코딩은 어려운 내용이므로 항상 보는 것을 신뢰할 수는 없습니다. 보통 utf-8을 사용하면 문제를 해결하는 데 충분합니다. 오라클 서버, 오라클 클라이언트 (jdbc), 그루비 파일 등 모든 곳에서 사용하고 있는지 확인하십시오. Java는 utf-16을 사용합니다. jdbc 드라이버가이 변환을 수행해야합니다. 가장 좋은 조언은 java (와 그루비)가 문자 인코딩과 관련하여 그들이하는 일을 정확히 수행하므로 문제가 존재하지 않는다는 것입니다. 시스템의 각 부분에 대한 실제 비트 (16 진수 값)를 검사 할 수있는 도구가 있는지 확인하십시오. mysql에서 - 단지 16 진수 일 뿐이다 : http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_hex.
나는 오라클이 비슷한 기능을 가지고 있다고 가정합니다. 다시 클라이언트가 utf-8을 사용하도록 구성되었는지 확인하십시오. 전에 불에 타 버렸어. 소스 파일 (또는 로그 파일)을 검사하려면 xxd 또는 od와 같은 것을 사용하십시오. cygwin을 사용한다면 utf8을 켜십시오 (폰트 메뉴에서). 창문에 cygwin을 사용하지 않는다면, 반드시 회전시켜야합니다 (x 버전을 사용해야합니다).

+0

나는 창문 밑에서 개발 중이고 testin은 우분투 아래에 통합되어 있고 생산 환경은 suse enterprise linux이다. DB는 oracle 10.xx입니다. 이 문제는 세 가지 환경에서 나타납니다. 나는 창문 문제 일 뿐이라고 생각했다. 그것은 어디 에나 있습니다. 어쨌든, 당신 조언을 해줘서 고마워. 나는 그것을 고려할 것이다. +1 – Luixv