You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Function Python 字符串编码异常问题求助

解决Python Azure Function中的Unicode编码输出问题

问题根源

Azure Functions的Python运行时(Windows环境)默认将标准输出/错误流的编码设为cp1252,该编码不支持Δ(\u0394)这类Unicode字符,因此执行print时会触发UnicodeEncodeError;使用logging模块时,默认编码不匹配,导致字符被替换成问号。

解决方案

1. 强制修改标准输出/错误流为UTF-8编码

在函数代码开头添加以下代码,重定向stdout和stderr的编码:

import sys
import codecs

# 强制设置标准输出、错误流为UTF-8编码
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
sys.stderr = codecs.getwriter("utf-8")(sys.stderr.detach())

之后执行print(a)就能正常输出Δ字符。

2. 配置logging模块使用UTF-8编码

若用logging记录日志,需手动配置日志处理器的编码:

import logging
import sys

# 重置根日志器配置
logger = logging.getLogger()
logger.setLevel(logging.INFO)
for handler in logger.handlers[:]:
    logger.removeHandler(handler)

# 创建UTF-8编码的日志处理器
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))
handler.encoding = 'utf-8'
logger.addHandler(handler)

# 测试日志输出
logger.info(a)  # 此时会正常显示Δ

3. 替代方案:直接返回结果给调用者

如果只是需要将字符返回给请求方,无需输出到控制台,直接在函数返回值中返回即可:

import azure.functions as func

def main(req: func.HttpRequest) -> func.HttpResponse:
    test = b'\xce\x94'
    a = test.decode('utf-8')
    return func.HttpResponse(a, charset='utf-8')

前端调用时就能正确获取到Δ字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:25:38