Encodage UTF-8 MySQL

Bonjour à tous et à toutes :slight_smile:

Je débute avec Rails et j’ai déjà de gros problèmes avec les jeux de
caractères. Toute ma base de donnée est en UTF-8…

Cependant, il apparaît des ‘?’ à la place de mes accents quand je fais
un simple find() pour récupérer mes données…

J’ai alors essayer plusieurs choses :

Ajouter :

KCODE = u
require jcode

dans mon environement .rb ainsi que l’entete magique
meta http-equiv=“Content-Type” content=“text/html; charset=utf-8” dans
mon layout.

Ce qui est étrange, c’est que mes accents apparaissent quand je force ma
page en ISO-8859-1. Ca aurait pu faire l’affaire… Mais ce tour de passe
/ passe ne marche plus dès que j’ai une requète AJAX :confused:

Merci de m’aider.
Je suis desespérée…

Feustine a écrit :

Bonjour à tous et à toutes :slight_smile:

Je débute avec Rails et j’ai déjà de gros problèmes avec les jeux de
caractères. Toute ma base de donnée est en UTF-8…

[…] Ce qui est étrange, c’est que mes accents apparaissent quand je force ma
page en ISO-8859-1. Ca aurait pu faire l’affaire… Mais ce tour de passe
/ passe ne marche plus dès que j’ai une requète AJAX :confused:

Hello !

Essaye de mettre un filtre sur ton application controller, comme ceci !

class ApplicationController < ActionController::Base

before_filter :set_charset

def set_charset
suppress(ActiveRecord::StatementInvalid) do
ActiveRecord::Base.connection.execute ‘SET NAMES UTF8’
end
if request.xhr?
@headers[‘Content-Type’] = ‘text/javascript; charset=utf-8’
else
@headers[‘Content-Type’] = ‘text/html; charset=utf-8’
end

end
end

A priori ça doit résoudre ton pb puisque même les requêtes “xhr” (i.e.
Ajax) se verront adjoindre l’en-tête HTTP définissant le content-type
“qui va bien”.

Hope this helps…
Bonne journée !
Benjamin

Ce qui est étrange, c’est que mes accents apparaissent quand je force ma
page en ISO-8859-1. Ca aurait pu faire l’affaire… Mais ce tour de passe
/ passe ne marche plus dès que j’ai une requète AJAX :confused:

Merci de m’aider.
Je suis desespérée…

Je copie/colle un ancien message

Il faut vérifier toute la chaîne :

  • encoding des champs de la base de données
    ok d’après “Toute ma base de donnée est en UTF-8…”
  • encoding de la connexion avec la base de données
    Il faut donc vérifier la présence de la ligne
    encoding: utf8
    dans le fichier database.yml
  • encoding déclaré dans l’en-tête méta HTML
    ok d’après meta http-equiv=“Content-Type” content=“text/html;
    charset=utf-8”
  • encoding du fichier lui-même
    vérifier l’encodage des fichiers dans l’éditeur de texte/IDE
  • encoding envoyé par Rails dans les en-têtes HTTP
    ça doit être bon avec KCODE = u et require jcode
  • encoding envoyé par le serveur web
    Par défaut, je crois que Webrick ne renvoie pas en UTF8. vérifier les
    entêtes avec l’extension webdeveloper pour Firefox par exemple
    Web Developer
  • encoding envoyé par le serveur web
    Par défaut, je crois que Webrick ne renvoie pas en UTF8. vérifier les
    entêtes avec l’extension webdeveloper pour Firefox par exemple
    Web Developer

Ooops, après vérification, webrick renvoie bien systématiquement en UTF8