2011-09-09 11 views
5

Estoy aprendiendo Bottle framework y nuevo en Python. Acabo de tropezar con esta dificultad. Cuando escribo un método sencillo para devolver una una cadena árabe como:Cómo renderizar cadenas árabes en el marco de botella?

@route('/hello') 
def hello(): 
    return u'سلام' 

me sale este mensaje de error en el terminal:

SyntaxError: Non-ASCII character '\xd8' in file hello.py on line 15, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

he importado todos de botella y intentado añadir otros métodos mencionados en el docs donde se habla de "Cambiar la codificación predeterminada"; sin embargo, no pude resolver el problema. Así que aprecio tus consejos.

+0

¿Qué es exactamente lo que este mensaje de error ??? – rocksportrocker

+0

siga el enlace en el mensaje de error. – JBernardo

+0

Los errores aparecen en el terminal cuando ejecuto el script: 'python hello.py' – qliq

Respuesta

5

sólo tiene que añadir

# -*- coding: whatever-encoding-you-use -*- 

en la parte superior de su archivo

+0

SyntaxError: sintaxis no válida – qliq

+0

probablemente use UTF-8 (espero que sí). Así que escríbelo en lugar de 'whatever-encoding-you-use' – JBernardo

+0

Según la documentación, la codificación predeterminada de la botella es utf-8 y la predeterminada de mi editor es también utf-8. Eso es lo que hace que este problema sea tan extraño para mí. – qliq

2

guardar el archivo como UTF-8 e insertar

#encoding: utf-8 

como la primera línea de su archivo

+0

SyntaxError: sintaxis no válida. De acuerdo con los documentos Utf-8 es la codificación predeterminada. – qliq

+1

@qliq: ¿Ya resolvió su problema? Si es así, probablemente deberías aceptar una de las respuestas. En caso negativo, ¿puede explicar dónde obtiene SyntaxError en un comentario? _ Tal vez proporcione un fragmento adicional de su código en la pregunta en sí. – Helgi

2

En la parte superior de la secuencia de comandos, ingrese esto:

# encoding: utf-8 

La cosa es, la secuencia de comandos podría funcionar con la codificación latin1 (ISO 8859-1), que está limitada en comparación con UTF-8

+0

Mi editor es gedit, y su codificación predeterminada es utf-8 – qliq

+0

Quizás, pero cuando ejecuta el script, Python Interpreter no sabe si usa un IDE o Gedit que usa UTF-8 cuando escribe su código. Cuando ejecuta el script y ve que usa UTF-8 lo configurará, o usará el Latin1 predeterminado (tal vez no para python3 y más, no estoy seguro) – HexaGridBrain

7

Aquí está mi código para la prueba:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

from bottle import * 

@route('/hello') 
def hello(): 
    return u'سلام' 

run(host='127.0.0.1', port=8080,reloader=True) 

En mi editor, elijo Archivo> Guardar como ..., luego selecciono Unicode (UTF-8) como Codificación de texto y lo guardo como hello.py

Luego descargue the lastest version of bottle.py from github, y colóquelo en la misma carpeta (ej. botella de prueba) con hello.py

Ejecútelo, y parece que no hay ningún problema en absoluto.

~$ python --version 
Python 2.6.7 
~$ cd bottle-test 
bottle-test$ python hello.py 

Result in browser

+0

mejor respuesta sorprendente que no sabía botella marco, tan genial tan fácil: D gracias شكر لك – ucefkh

Cuestiones relacionadas