Bonjour,
je rencontre plusieurs problèmes avec les accents. Mon appli est
entièrement en latin-1 (car la bdd est en latin1 et je ne peux pas en
changer).
- dans database.yml, j’ai bien encoding: latin9
- j’ai rajouté
headers[“Content-Type”] = “text/html; charset=iso-8859-1”
dans tous mes headers - tous mes fichiers sont en latin1
Avec tout ça, je gère bien les accents (affiche et insertion dans la
bdd OK) à 2 exceptions près :
- lorsque j’ai certains accents (tous ne posent pas de pb) dans une
chaine de caractère que je passe à un link_to dans une view :
<%= link_to “Liste des universites”, universites_path %>
j’ai le message d’erreur suivant :
compile error
app/views/home/index.html.erb:20: syntax error, unexpected $undefined,
expecting ‘)’
…ath ).to_s); _erbout.concat “\n\n”
^
app/views/home/index.html.erb:20: unterminated string meets end of
file
app/views/home/index.html.erb:20: syntax error, unexpected
tSTRING_END, expecting tSTRING_CONTENT or tREGEXP_END or tSTRING_DBEG
or tSTRING_DVAR
j’ai essayé de mettre $KCODE=‘NONE’ ou $KCODE=‘ISO-8859-1’ dans
enviroment.rb, mais ça ne change rien.
Ce sont les accents graves et circonflexes qui posent problème (les
accents aïgus passent bien…)
- la fonction upcase() ne marche pas sur les lettres accentuées. J’ai
essayé de convertir en utf-8, de transformer en majuscules, puis de
reconvertir en latin1, mais ça ne marche pas :
def nom_maj
i = Iconv.new(‘ISO-8859-1’, ‘UTF-8’)
ir = Iconv.new(‘UTF-8’, ‘ISO-8859-1’)
nom_utf8 = ir.iconv(nom)
nom_latin1 = i.iconv(nom_utf8.upcase)
return nom_latin1
end
Au pire, je peux supprimer les accents quand je passe en majuscule,
mais si je pouvais éviter ça…
Merci de toute piste pouvant m’aider !