Pues he tenido un problema de locales rebeldes que no se cambiaban, así que hemos tenido que repasar un poquito este tema :P
El problema estaba que al crear una maquina virtual openvz con debian 6.0 los locales no se generaron correctamente y ponía que eran POSIX pero las requería en UTF-8 ya que todos los sistemas que tengo trabajan en esta codificación.
La forma elegante de hacerlo es mediante dpkg-reconfigure locales
# dpkg-reconfigure locales
Y le indicamos la locale deseada.
Aún así a mi no me estaba haciendo caso, ni siquiera reiniciando la maquina, así que he probado con otra forma un poco mas bruta:
# vi /etc/locale.gen en_US.UTF-8 UTF-8
La línea estaba comentada, reinicio y el mismo problema, las locale POSIX
root@v-www-conway:/etc# locale LANG= LC_CTYPE="POSIX" LC_NUMERIC="POSIX" LC_TIME="POSIX" LC_COLLATE="POSIX" LC_MONETARY="POSIX" LC_MESSAGES="POSIX" LC_PAPER="POSIX" LC_NAME="POSIX" LC_ADDRESS="POSIX" LC_TELEPHONE="POSIX" LC_MEASUREMENT="POSIX" LC_IDENTIFICATION="POSIX" LC_ALL=
En /etc/default/locale
# vi /etc/default/locale LANG=en_US.UTF-8
Así que hemos tirado por mas fuerza bruta aún, he añadido esta línea al final de /etc/profile
# vi /etc/profile : ${LANG:=en_US.UTF-8}; export LANG
y luego si ha funcionado. El : no lo conocía, y supongo que es el equivalente a export.
root@v-www-conway:/etc# locale LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=
Pues hasta aquí el tip of the day ;)