Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

404
Vistas
Docker Python establece la configuración regional utf-8

Estoy tratando de ejecutar mi archivo python que primero lee una cadena en idioma chino e imprimirlo.

Este es mi Dockerfile

 FROM python:2.7-onbuild ENV LANG en_US.UTF-8 ADD . /code WORKDIR /code RUN pip install -r requirements.txt CMD ["python", "app.py"]

Este es mi archivo python:

 # -*- coding: utf-8 -*- import jieba s = "我来到北京清华大学" s = s.decode('utf-8') print type(s), s

Entonces ejecuto:

docker build -t python-example .

docker run python-example

Error que recibí: UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-8: ordinal not in range(128)

Cuando lo ejecuto localmente, funciona bien.

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Version corta

Pon esto en tu Dockerfile :

 ENV PYTHONIOENCODING=utf-8

o como se menciona en los comentarios anteriores, páselo en la línea de comando:

 docker run -e PYTHONIOENCODING=utf-8 my-python-image some-command

Versión larga:

Cuando inicia el intérprete de Python, Python tiene que configurar stdout para enviar la salida a su terminal. En su sistema operativo moderno, su terminal probablemente informe que admite UTF-8 o alguna otra codificación avanzada. Puede ver qué codificación se usa ejecutando este comando:

 $ python -c 'import sys; print(sys.stdout.encoding)' UTF-8

Cuando ejecuta un contenedor docker, las variables de entorno que Python esperaría usar una codificación más avanzada no están presentes, por lo que Python recurrirá a un conjunto de caracteres básico para garantizar la compatibilidad. Puede verificar esto ejecutando el mismo comando en su contenedor:

 $ docker run my-python-image python -c 'import sys; print(sys.stdout.encoding)' ANSI_X3.4-1968

Cuando pasamos PYTHONIOENCODING , vemos que sys.stdout.encoding está configurado correctamente:

 $ docker run -e PYTHONIOENCODING=UTF-8 my-python-image python -c 'import sys; print(sys.stdout.encoding)' UTF-8

Lea acerca de PYTHONIOENCODING en la documentación de Python . Esta respuesta también entra en gran detalle sobre la codificación/descodificación y la stdout .

about 4 years ago · Santiago Trujillo Denunciar

0

Me encontré con el mismo problema mientras implementaba una aplicación Django con supervisor y gunicorn.

Lo que solucionó fue agregar la siguiente línea a mi archivo de configuración de supervisor:

 environment=LANG="es_ES.utf8", LC_ALL="es_ES.UTF-8", LC_LANG="es_ES.UTF-8"

Para su caso, asegúrese de que la configuración regional china que desea imprimir esté disponible e instalada en su contenedor docker. Este blog describe cómo hacerlo: ejemplo dockerfile (use la configuración regional china en lugar de en_CA.UTF-8):

 FROM ubuntu:15.10 MAINTAINER Mobify <ops@mobify.com> RUN apt-get -qq update && \ apt-get -q -y upgrade && \ apt-get install -y sudo curl wget locales && \ rm -rf /var/lib/apt/lists/* # Ensure that we always use UTF-8 and with Canadian English locale RUN locale-gen en_CA.UTF-8 COPY ./default_locale /etc/default/locale RUN chmod 0755 /etc/default/locale ENV LC_ALL=en_CA.UTF-8 ENV LANG=en_CA.UTF-8 ENV LANGUAGE=en_CA.UTF-8

Esperemos que esto te lleve en la dirección correcta.

about 4 years ago · Santiago Trujillo Denunciar

0

Agrego el siguiente comando en mi archivo acoplable:

 RUN locale-gen en_US.UTF-8 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'

luego construya/reconstruya las imágenes de la ventana acoplable, será mejor que agregue esto en la imagen base.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda