Sto utilizzando il datastore GAE per un'applicazione Java e sto memorizzando del testo che sarà in molte lingue. Nel mio servlet, io sono il primo controllo per vedere se ci sono tutti i dati nell'archivio dati, e, se no, sto creando un po ', simile al seguente:Codifica del datastore di Google App Engine?
ArrayList<Lang> list = new ArrayList<Lang>();
list.add(new Lang("EN", "English", 1));
list.add(new Lang("ES", "Español", 0));
//more languages here...
PersistenceManager pm = PMF.get().getPersistenceManager();
for(Lang l : list) {
pm.makePersistent(l);
}
Dal momento che questo sta usando JDO, ho Immagino che devo includere le parti rilevanti della classe Lang
troppo:
@PersistenceCapable
public class Lang {
@PrimaryKey
private String code;
@Persistent
private String name;
@Persistent
private int popularity;
// getters & setters & constructors...
}
Tuttavia, i caratteri non ASCII mi stanno dando dolore. Ho impostato il mio progetto Eclipse per utilizzare la codifica UTF-8 invece del Cp1252 predefinito, quindi ho penso Sono a posto da quella prospettiva, ma quando utilizzo App Engine Data Viewer per guardare i miei dati, quello Español la voce diventa España e quando faccio clic su di essa per visualizzarla, ricevo un errore di 500 server. (Ci sono altre voci con testo da destra a sinistra che non appaiono affatto nel Data Viewer, ma un problema alla volta ...)
C'è qualcosa di speciale che posso fare nel mio codice per impostare la codifica dei caratteri o specificare su GAE che i dati che sto memorizzando sono UTF-8? O è il problema sul lato Eclipse, e c'è qualcosa che dovrei fare con il mio codice Java?
Non è una "soluzione" di per sé, ma se inserisco i dati manualmente, utilizzando il Visualizzatore dati, viene inserito correttamente, e il mio servlet che estrae i dati dal datastore e lo restituisce restituisce anche i dati fini. Questa potrebbe diventare la mia soluzione; Ho solo bisogno del carico iniziale di dati da eseguire e dopo non verrà aggiornato, quindi eseguirlo manualmente è un'opzione. Anche se preferirei sapere perché la soluzione di codifica non funzionava ... – sernaferna