为什么 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”

我对此完全陌生,所以我希望有人能帮助我。 非常感谢!

你的contentbytes,不是字符串,在它上面调用str()会把它转成字符串,但是傻傻地基于__repr__。相反,调用 get_data 不同:

content = request.get_data(as_text=True)

现在这将是一个正确解码的字符串,然后您也可以摆脱 b'-stripping。