Les caractères spéciaux ou accentués

Je suis en train de faire un travail pour un client français, et donc le besoin de traiter avec des caractères accentués. Mais je suis en cours d'exécution dans beaucoup de difficulté, je suis en espérant que la solution est simple et que quelqu'un peut le point hors de moi.

La chaîne: La Forêt pour Témoin
est converti à: La For? pour T?oin

Note le caractère manquant suivant le caractère accentué la t à la suite de la ê et la m à la suite de la é.

J'ai essayé d'utiliser StringEscapeUtils qui a réussi à s'échapper certains caractères, tels que ®. J'ai aussi crée mon propre fonction d'échappement qui produit les mêmes résultats (® de travail, ê ne sera pas).

private String escapeChars(String string) {
    char[] chars = string.toCharArray();
    String result = "";
    for (int i = 0; i < chars.length; i++) {
        int c = chars[i];
        result += "&#" + c + ";";
    }
    return result;
} 

Le projet est en cours d'exécution dans eclipse à l'aide de l'App Engine plugin, je ne peut pas déterminer si le problème est causé par Java, App Engine, ou SQLite.

Toute aide est appréciée.

EDIT: j'ai trouvé que la chaîne de caractères sont mal formés lors de simplement afficher le paramètre de la requête à partir d'un formulaire. (c'est à dire, demande.getParameter("string") a déjà un contenu incorrect).

J'ai essayé le méta-tag proposé par Daniel, sans succès. Je pense que vous êtes sur la bonne voie cependant, les données d'en-tête d'un document html suivant:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Lorsque les caractères accentués sont codés en dur dans une page JSP, elles sont affichées comme prévu.

EDIT: j'ai également ajouté <?xml version="1.0" encoding="UTF-8"?> au tout début de la page.

Je suis très proche d'une solution. J'ai trouvé que si je change l'encodage de la page dans le navigateur des données de formulaire est transmis au serveur correctement. Je ne peux pas comprendre comment faire le navigateur détecter automatiquement le codage de la page.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

RÉSOLU: je ne pouvais pas travailler sur la façon de rendre le navigateur auto-détecter l'encodage UTF-8 de java par défaut. J'ai donc forcé de codage de caractères ISO-8859-1 en utilisant la demande.setCharacterEncoding("ISO-8859-1").

Non pas que cela va résoudre le problème, mais c'est une bonne lecture: joelonsoftware.com/articles/Unicode.html
Si les paramètres de la demande résultant de la soumission d'un formulaire sont incorrectes, puis le navigateur est certainement essayer d'utiliser l'auto-détecté jeu de caractères qui ne peuvent pas représenter les caractères accentués. Essayez d'ajouter: <?xml version="1.0" encoding="UTF-8"?> au tout début du document, pas précédée par des espaces; ce doit être les premiers caractères du document XHTML.

OriginalL'auteur klonq | 2010-06-22