当我直接运行代码时,它将用编码UTF-8的正确字符串打印XML内容。一个节点看起来像这样:
<despacho codigo="IPAS009" nome="Publicação de pedido de registro para oposição (exame formal concluído)"/>
,但是,如果我使用Azure函数在本地运行相同的代码,它将像这样打印:
<despacho codigo="IPAS009" nome="PublicaþÒo de pedido de registro para oposiþÒo (exame formal concluÝdo)"/>
我认为这是我的代码以错误的方式编码某些内容的问题,我尝试了稍后解码的各种方式,但没有找到任何解决方案。然后我在没有Azure功能的情况下进行了测试,并且可以很好地工作。
我使用HTTP触发Azure函数。现在,它仅托管服务器,当我调用端点时,它在没有任何参数的情况下运行该函数。
我尝试强迫其他编码,例如
xml_content = xml_content.decode("UTF-8")
,但没有改变任何东西。 我还尝试了再次编码和解码,但不运气。
看起来这个问题是由Azure函数中的默认编码引起的。在本地运行代码时,Python可能默认为UTF-8,但是在Azure中,它可能使用不同的编码(例如Windows-1252),从而导致字符腐败。
要解决此问题,请尝试以下操作:
检查下载文件的编码 - 该文件本身可能不会在UTF-8中编码。您可以使用
chardet
库进行检查。
Azure中的python使用UTF-8 - 尝试配置sys.stdin
PYTHONUTF8
.。
1
解码文本 - 如果有问题的字符,这可能会用可读的字符代替。
这些解决方案之一应该解决该问题。让我们知道它是否有帮助!