UiPath HTTP请求含德语变音字符的XML体编码错误求助
UiPath HTTP Request 德语变音字符编码错误解决方案
问题场景
使用UiPath.Web.Activities.HttpClient中的HTTP Request活动构造包含ä、ö、ü等德语变音字符的SOAP XML请求体,示例XML如下:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="..."> <soapenv:Header/> <soapenv:Body> <ns:aendernKarte> <credentials> <clientApplikation>...</clientApplikation> <kordobaApplikation>...</kordobaApplikation> ... </credentials> <karte> <bemerkung>ö</bemerkung> </karte> </ns:aendernKarte> </soapenv:Body> </soapenv:Envelope>
XML内容存储在字符串变量v_body中,活动的Attachments、Cookies等字段均为空。执行后返回500错误,德语变音字符出现编码错误(如ö变为ö)。已尝试以下三种UTF-8配置方案但无效:
- 在XML开头添加
<?xml version="1.0" encoding="UTF-8"?> - 在BodyFormat属性设置
application/xml;encoding=UTF8 - 在Options/Headers添加
Content-Type = application/xml;encoding=UTF8
可行解决方法
1. 强制将字符串转为UTF-8字节数组发送
UiPath的HTTP Request活动处理字符串时可能默认使用系统编码(如ISO-8859-1),手动转成UTF-8字节数组再发送可解决编码问题:
- 创建
Byte[]类型变量(例:v_utf8Body) - 用Assign活动赋值:
v_utf8Body = System.Text.Encoding.UTF8.GetBytes(v_body) - 在HTTP Request活动的Body字段选择
Byte Array类型,传入v_utf8Body - 确保Headers里设置
Content-Type: application/xml; charset=utf-8(注意是charset=utf-8,而非encoding=UTF8)
2. 修正XML声明格式
如果保留XML声明,必须确保它在文档最开头,前面不能有任何空格或多余字符,格式要准确:
<?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="..."> <!-- 剩余XML内容 --> </soapenv:Envelope>
3. 排查字符串变量的编码来源
确认v_body的内容从源头就是正确的UTF-8编码:
- 若XML是从文件读取,用Read Text File活动时要指定编码为
UTF-8,避免读取阶段就出错 - 若通过字符串拼接生成XML,保证所有参与拼接的字符串都是UTF-8编码的,防止中间环节出现编码转换错误
内容的提问来源于stack exchange,提问作者sergioMoreno
相关产品推荐
相关产品推荐

