2011-03-26 16 views
9

Hola Estoy usando Google App Engine para un proyecto que estoy haciendo y necesito almacenar algunas cadenas. Estoy usando Java y JDOHelper.getPersistenceManagerFactory("transactions-optional")Problema de codificación de cadena de datastore del motor de la aplicación de Google

Al depurarlo en mi computadora todo funciona bien y las cadenas se guardan correctamente. Pero cuando lo subo al motor de la aplicación de google, todas las cadenas que guarde tendrán sus caracteres Unicode reemplazados por signos de interrogación (?). Si voy al DataViewer en la página del proyecto, puedo ver que las cadenas se guardan con signos de interrogación.

Como dije, al ejecutarlo en mi computadora funciona bien. ¿Hay alguien que sepa lo que debería hacer?

+0

¿Estás hablando sobre el uso de "codificado" Cuerdas o "codificar" Cuerdas –

+0

Qué codificación de caracteres ¿Has especificado en tus páginas? UTF-8 está funcionando bien para mí. – Eelke

+0

No lo sé realmente. Soy bastante nuevo en GAE y cosas de codificación. Pero hice una prueba e intenté escribir una cadena con el carácter "å" directamente al administrador de persistencia de mi servlet, y funcionó bien. Así que supongo que tiene algo que ver con la decodificación de la cadena que entra por el POST. Pero como dije, funciona bien cuando se depura localmente – Joel

Respuesta

3

Parece que no especificaba la codificación de su contenido HTTP POST. Eche un vistazo a this question para más detalles.

1

Como dijo Jackrabbit, debe especificar el juego de caracteres. Todavía tengo algunos problemas en Google App Engine. Después de configurar el juego de caracteres en UTF-8 Y usando el CharacterEncodingFilter de Spring, nada me ha molestado en la codificación.

Ver How To Get Character Encoding Correct, que incluye información sobre el código para agregar a su archivo web.xml:

<filter> 
    <filter-name>SetCharacterEncoding</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
    <init-param> 
     <param-name>forceEncoding</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>SetCharacterEncoding</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

Asegúrese de añadir esto como el primer paso en su cadena de filtros!

Además, el autor del blog propone la creación de los juegos de caracteres en sus páginas JSP a UTF-8, así:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
Cuestiones relacionadas