You need to enable JavaScript to run this app. 使用Flask打印Alexa购物清单时德语变音字符显示异常如何解决
优惠活动
大模型
产品
解决方案
定价
更多

使用Flask打印Alexa购物清单时德语变音字符显示异常如何解决

德语变音字符打印乱码修复方案

问题根因

你遇到的乱码问题由两个错误导致:

  • 字节流转字符串的处理逻辑错误:request.get_data()返回的是UTF-8编码的原始字节流,直接调用str(content)会把字节对象的字面表示(包含b'前缀、十六进制转义字符)直接转为普通字符串,而非实际的文本内容,这就是你看到\xc3\xbcl这类字符的直接原因。
  • 未给热敏打印机设置支持德语变音的字符编码:ESC/POS协议打印机默认使用ASCII编码,本身不支持ü、ä、ö这类德语变音字符,需要手动切换到对应字符集。

修复后的完整代码

#!flask/bin/python
from flask import Flask, request
from escpos.printer import Usb

p = Usb(0x0416, 0x5011)
# 给打印机设置支持西欧语言的编码,兼容德语变音字符
p.charcode('WPC1252')
app = Flask(__name__)

@app.route('/')
def index():
    return 'Your Flask server is working!'

@app.route('/list')
def list():
    content = request.get_data()
    # 直接把字节流按UTF-8解码为正常字符串,不需要后续处理b'前缀
    str_content = content.decode('utf-8')
    str_split = str_content.splitlines()
    
    newlist = []
    for word in str_split:
        word = word.split(',')
        newlist.extend(word)
    
    p.text("Shopping List:\n")
    r = 1
    for x in newlist:
        p.text(f"{r}. {x}\n")
        r += 1
    return 'x'

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0')

补充说明

如果使用WPC1252编码仍然有显示异常,可以尝试替换为ISO-8859-1或者CP850,不同厂商的打印机支持的字符集略有差异,依次尝试即可找到适配的编码。


内容的提问来源于stack exchange,提问作者JustusJonas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 10:45:04