Sto costruendo un'app gwt che memorizza il testo di pagine Web casuali in un campo di testo del datastore. Spesso il testo è formattato in UTF-8. Tutti i file della mia app sono memorizzati come UTF-8 e quando eseguo l'applicazione sul mio computer locale l'intero processo funziona correttamente. Il testo UTF-8 è memorizzato come tale e recuperabile dalla versione locale del motore dell'app come UTF-8. Tuttavia, quando installo l'app sul motore dell'app google da qualche parte tra quando immagazzino il testo e quando lo recupero non è più UTF-8 che fa sì che i caratteri non ascii vengano visualizzati come?.Google App Engine DataStore Testo UTF-8 Problema di codifica
Quando visualizzo il datastore nel pannello di controllo appengine tutti i caratteri speciali vengono visualizzati come? che mi porta a credere che sia un problema quando si scrive al database.
Qualcuno sa come risolvere questo problema?
L'app in sé è un po 'grande. Ecco alcuni pseudocodice:
Text webPageText = new Text(<STRING THAT CONTAINS UNICODE CHARACTERS>);
/*Some Code to store Text object on datastore
Specifically I'm using javax.jdo.PersistenceManager to do this.
Some Code to retrieve text from datastore. */
String retrievedText = webPageText.getValue();
Il problema è che retrievedText torna con? invece di caratteri unicode.
Ecco un problema simile in python che ho trovato: Trying to store Utf-8 data in datastore getting UnicodeEncodeError. Anche se la mia app non ha riscontrato errori.
Purtroppo penso che le stringhe Java siano predefinite in utf-8 e non riesco a trovare alcun codice che consenta di dichiararle esplicitamente come utf-8.
Modifica: ora ho creato una piccola webapp che accetta il testo unicode e lo memorizza nell'archivio dati e quindi lo recupera senza problemi. Non ho ancora idea di dove si trovi il problema nel mio codice sorgente originale, ma cambierò il modo in cui il mio codice gestisce il recupero delle pagine web in modo che corrisponda all'app più piccola che ho appena creato. Grazie a tutti per il vostro aiuto.
Potrebbe pubblicare i bit di codice rilevanti? –
Dici che pensi che il problema sia con la memorizzazione e il recupero, quindi non includere il codice che stai utilizzando per archiviare e recuperare i dati! Abbiamo bisogno del codice pertinente se vogliamo aiutarti. –
La fonte per l'intero progetto è ora pubblicata sopra. Tra un paio d'ore cercherò di creare una versione ridotta che riproduca il problema. –