delphi7 下怎么把中文转成utf-8格式

q18874197270 2017-12-06 12:17:46
<?xml version="1.0" encoding="utf-8"?>
<xml>
<body><![CDATA[中文]]></body>
<service><![CDATA[unified.trade.micropay]]></service>
<mch_id><![CDATA[101550250179]]></mch_id>
<out_trade_no><![CDATA[lv171206113807]]></out_trade_no>
<total_fee><![CDATA[1]]></total_fee>
<nonce_str><![CDATA[579577453]]></nonce_str>
</xml>

这是一个xml ,我想post到一个地址,,但是对方是接收utf8格式的..我post后会提示你字符集不对.
...全文
4074 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr Dang 2017-12-18
  • 打赏
  • 举报
回复

            postStream:=TStringStream.Create(strPostXml,TEncoding.UTF8);
            idHttp.Post(strURL,postStream);
  • 打赏
  • 举报
回复
IdHTP1.Post post方法是重载的 有指定字符集的 参数用TStringList,指定字符集 TEncoding.UTF8
日月路明 2017-12-08
  • 打赏
  • 举报
回复
str:=UTF8Encode(str)
q18874197270 2017-12-08
  • 打赏
  • 举报
回复
引用 2 楼 doloopcn 的回复:
uses IdURI; .. begin //默认加密为UTF8 S := TIdURI.URLEncode(str); //解密 S := TIdURI.URLDecode(str); end;
这个不会用..用了报错..--------------------------- project1 --------------------------- Protocol field is empty. --------------------------- 确定 ---------------------------
q18874197270 2017-12-08
  • 打赏
  • 举报
回复
引用 1 楼 yuyuhaso 的回复:
utf8encode()
用了,好像没用
q18874197270 2017-12-08
  • 打赏
  • 举报
回复
引用 3 楼 yisuylm 的回复:
str:=UTF8Encode(str)
postxml.Add('<?xml version="1.0" encoding="utf-8"?>'); // 添加的第一个节点是根节点, 现在的 xml 是根节点} postxml.Add('<xml>'); postxml.Add('<body><![CDATA['+sbody+']]></body>'); //订单描述 //接口类型 postxml.Add('<service><![CDATA[unified.trade.micropay]]></service>'); //商户号 postxml.Add('<mch_id><![CDATA['+edt1.Text+']]></mch_id>'); //商户订单号 postxml.Add('<out_trade_no><![CDATA['+edt2.Text+']]></out_trade_no>'); //金额单位 : 分 postxml.Add('<total_fee><![CDATA['+edt3.Text+']]></total_fee>'); //终端IP postxml.Add('<mch_create_ip><![CDATA['+'127.0.0.1'+']]></mch_create_ip>'); //用户二维码 postxml.Add('<auth_code><![CDATA['+edt4.Text+']]></auth_code>'); //签名 postxml.Add('<sign><![CDATA['+sign+']]></sign>'); //随机值 postxml.Add('<nonce_str><![CDATA['+sRandom+']]></nonce_str>'); postxml.Add('</xml>'); RequestList := TStringList.Create; RequestList:=UTF8Encode(postxml.Text); IdHTP1.Request.ContentType :='text/xml'; IdHTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Maxthon)'; IdHTP1.Post('https://pay.swiftpass.cn/pay/gateway',RequestList,ResponseStream); XMLDocument1.LoadFromXML(UTF8Decode(ResponseStream.DataString)); XMLDocument1.Active := True; Rootnode := XMLDocument1.DocumentElement; 对方 接收必须是utf-8的编码..如果都是英文数字..这是可以成功的.. 但是一但加入中文字符,就会收到错误 的返回信息, 原来我接收返回的字符中如果 有中文,,不用UTF8Decode()这个也会显示乱码..现在我传递加入UTF8Encode()好像没用.
doloopcn 2017-12-07
  • 打赏
  • 举报
回复
uses IdURI; .. begin //默认加密为UTF8 S := TIdURI.URLEncode(str); //解密 S := TIdURI.URLDecode(str); end;
yuyuhaso 2017-12-07
  • 打赏
  • 举报
回复
utf8encode()

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧