为什么 Flask 不打印德语变音符号?
Why is Flask not printing german umlauts?
我在尝试使用 Flask 从 Alexa 打印购物清单时遇到了关于德语变音符号的问题。
我使用的代码是:
#!flask/bin/python
#IMPORT THE FLASK AND PRINTER LIBRARIES
from flask import Flask, request
from escpos.printer import Usb
#ASSIGN VARIABLES FOR THE PRINTER AND FLASK
p = Usb(0x0416, 0x5011)
app = Flask(__name__)
#CREATE 'INDEX' PAGE
@app.route('/')
def index():
return 'Your Flask server is working!'
#CREATE "PAGE" CALLED "LIST" FOR PRINTING ALEXA SHOPPING LIST
@app.route('/list')
def list():
#CAPTURE "GET" DATA FROM IFTTT WEBOOKS
content = request.get_data()
#CONVERT RAW DATA TO STRING
str_content = str(content)
#DIVIDE DATA INTO SEPERATE LINES
str_split = str_content.splitlines()
#SEPERATE WORDS BY COMMA AND ADD TO A NEW LIST
newlist = []
for word in str_split:
word = word.split(',')
newlist.extend(word)
#REMOVE FORMATTING MARKS
rmv_marks = [s.strip("b'") for s in newlist]
#PRINT HEADER
#print("Shopping List\n")
p.text("Shopping List:\n")
#ENUMERATE AND PRINT EACH ITEM IN LIST
r = 1
for x in rmv_marks:
#print(str(r) + ". " + x + "\n")
p.text(str(r) + ". " + x + "\n")
r += 1
#RETURN RESULTS
return 'x'
#RUN THE PROGRAM
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')`
它有效,但当列表中的项目中有变音符(例如 Spülmittel)时,它总是打印为“4.Sp\xc3\xbclmittel”
我对此完全陌生,所以我希望有人能帮助我。
非常感谢!
你的content
是bytes
,不是字符串,在它上面调用str()
会把它转成字符串,但是傻傻地基于__repr__
。相反,调用 get_data
不同:
content = request.get_data(as_text=True)
现在这将是一个正确解码的字符串,然后您也可以摆脱 b'
-stripping。
我在尝试使用 Flask 从 Alexa 打印购物清单时遇到了关于德语变音符号的问题。 我使用的代码是:
#!flask/bin/python
#IMPORT THE FLASK AND PRINTER LIBRARIES
from flask import Flask, request
from escpos.printer import Usb
#ASSIGN VARIABLES FOR THE PRINTER AND FLASK
p = Usb(0x0416, 0x5011)
app = Flask(__name__)
#CREATE 'INDEX' PAGE
@app.route('/')
def index():
return 'Your Flask server is working!'
#CREATE "PAGE" CALLED "LIST" FOR PRINTING ALEXA SHOPPING LIST
@app.route('/list')
def list():
#CAPTURE "GET" DATA FROM IFTTT WEBOOKS
content = request.get_data()
#CONVERT RAW DATA TO STRING
str_content = str(content)
#DIVIDE DATA INTO SEPERATE LINES
str_split = str_content.splitlines()
#SEPERATE WORDS BY COMMA AND ADD TO A NEW LIST
newlist = []
for word in str_split:
word = word.split(',')
newlist.extend(word)
#REMOVE FORMATTING MARKS
rmv_marks = [s.strip("b'") for s in newlist]
#PRINT HEADER
#print("Shopping List\n")
p.text("Shopping List:\n")
#ENUMERATE AND PRINT EACH ITEM IN LIST
r = 1
for x in rmv_marks:
#print(str(r) + ". " + x + "\n")
p.text(str(r) + ". " + x + "\n")
r += 1
#RETURN RESULTS
return 'x'
#RUN THE PROGRAM
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')`
它有效,但当列表中的项目中有变音符(例如 Spülmittel)时,它总是打印为“4.Sp\xc3\xbclmittel”
我对此完全陌生,所以我希望有人能帮助我。 非常感谢!
你的content
是bytes
,不是字符串,在它上面调用str()
会把它转成字符串,但是傻傻地基于__repr__
。相反,调用 get_data
不同:
content = request.get_data(as_text=True)
现在这将是一个正确解码的字符串,然后您也可以摆脱 b'
-stripping。