Frage

Ich entwickle eine Anwendung, die unter verschiedenen Sprachen (Deutsch, Spanisch, etc.) funktionieren soll. Die Anwendung verwendet eine Oracle-DB. Ich habe CRUD Geschäftsprozesse und ich habe die Standardansichten (Erstellen, Bearbeiten, zeigen, Liste). Keine Probleme für die Erstellung, die zeigen, und die Auflistung jeder Datensatz enthält Sonderzeichen wie ä, ö, ü, usw. Aber wenn ich bearbeiten einen Eintrag jeder dieser Zeichen enthalten, erhalte ich die codierte Ausführung. d.h.     & Auml; anstelle einer     & Ouml; anstelle von O     & Uuml; statt ü

und so weiter.

Jeder Hinweis, wie Sie dieses Problem zu lösen?

Danke!

UPDATE Danke für Ihre Hilfe. Ich werde das Szenario beschreiben:

Ich habe eine Web-Anwendung geschrieben in Grails (groovy auf Grails). Für die Entwicklung bin ich Jetty als Server und Oracle 10g verwenden. Für die Prüfung und Produktion Ich bin mit Tomcat 6.0.18 und Oracle 10g Java-Version 1.6.0_02 ist

Ich habe viele CRUD Prozesse (erstellen, abrufen, aktualisieren, löschen). Die Anwendung ist mehrsprachig. Das heißt, ä, ö, ü, ß, á, é, í, ó, ú Buchstaben (Zeichen) muss als Inhalt erlaubt werden.

Ansichten sind in gsp geschrieben. Ich verwende Standard .gsp Ansichten (Erstellen, Bearbeiten, zeigen, Liste). Kein Problem erstellen, zeigt, Liste. Das heißt, wenn unter der Ansicht erstellen I-Typ jedes Wort dieses Sonderzeichen, dann wird dies dargestellt oder aufgeführt werden korrekt unter der show.gsp oder list.gsp

Das Problem entsteht bei der Bearbeitung eines Datensatzes solche Zeichen enthält. Statt -let der Say- a erscheint im Feld eines & auml; (Dies ist die HTML-Codierung ä).

Ich habe folgende Einstellungen vor:

unter Config.groovy     grails.views.gsp.encoding = "UTF-8"     grails.converters.encoding = "UTF-8"

Jede .gsp Seite hat folgenden Meta-Tag:

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

Jede Form hat das folgende Attribut:

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

Unter Tomcat Ich habe die folgenden Einstellungen.

Kater wird mit den folgenden Optionen gestartet:

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

Unter web.xml ich die folgenden Filter

 <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>

Unter myApplication / WEB-INF / classes / Filter kopierte ich die SetCharacterEncodingFilter.class von Beispielen / WEB-INF / classes / Filter

Unter server.xml Ich habe den folgenden Stecker:

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

Das Szenario ist wie folgt: Der Server erhält eine Anfrage ein Formular für die Bearbeitung. Der Server ist das Abrufen der Daten aus der DB und dann entweder die DB sendet die Informationen bereits HTML codiert (ich glaube nicht) oder der Server kodiert es und schickt es an den Client verschlüsselt.

Darüber hinaus an meinem Controller kann ich sehen, dass die abgefragten Informationen vom Server nicht HTML-kodiert ist.

Ich weiß nicht, welche Einstellung in Ordnung getan werden muss, diese Codierung Problem fertig zu werden (Was mir sehr viel nehmen, viel Zeit und Mühe).

Vielen Dank im Voraus.

Luis

War es hilfreich?

Lösung 2

Neben all die Einstellungen bereits getan. Ich habe ein:

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

statt keinem und das Problem gelöst ist.

Mein Problem wurde bereits hier ausgesetzt: http: // www. groovy-forum.de/read.php?3,5008,5630

Weitere Informationen finden Sie unter:

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

Luis

Andere Tipps

Codierung ist ein schwieriges Problem, weil man nicht immer darauf verlassen, was Sie sehen. Normalerweise utf-8 verwendet, ist genug, um das Problem zu lösen. Stellen Sie sicher, dass Sie es überall verwenden, obwohl - Oracle-Server, Oracle-Client (JDBC), groovy Dateien usw. Beachten Sie, dass Java verwendet utf-16. Der JDBC-Treiber sollte für Sie diese Umwandlung tun. Der beste Rat zu geben, ist, dass Java (und damit groovy) tut genau das, was sie sagen, sie tun, wenn es um Zeichencodierung kommt so das Problem ist nicht da. Stellen Sie sicher, dass Sie Tools, die Sie die aktuellen Bits (Hex-Wert) für jeden Aspekt des Systems lassen untersuchen. In mysql - es ist nur hex: http://dev.mysql.com/doc/ refman / 5.0 / de / string-functions.html # function_hex .
Ich gehe davon aus Orakel eine ähnliche Funktion hat. Wieder stellen Sie sicher, dass Ihr Kunde utf-8 zu verwenden, konfiguriert. Ich habe vor damit verbrannt. Um Quelldateien (oder Logfiles) zu untersuchen etwas wie xxd oder od verwenden. Wenn Sie Cygwin verwenden, stellen Sie sicher, dass Sie auf UTF-8 drehen (im vt Schriftarten-Menü). Wenn Sie auf Windows sind und nicht Cygwin verwenden, sollten Sie auf jeden Fall nehmen Sie es für einen Spin (stellen Sie sicher, dass Sie die x-Version verwenden).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top