服务器不能显示中文,彻底解决delphi WebBroker服务器中文乱码 delphi WebBroker服务器不能显示中文网页 WebBroker中文显示乱码...

彻底解决delphi WebBroker服务器中文乱码

彻底解决WebBroker中文显示乱码

彻底解决delphi WebBroker服务器不能显示中文网页

这个问题被折腾惨啦!

网上一大堆,就没能彻底解决掉:

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=delphi%20WebBroker%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%AD%E6%96%87%E4%B9%B1%E7%A0%81&oq=delphi%2520webbroker%25E6%259C%258D%25E5%258A%25A1%25E5%2599%25A8%25E4%25B8%258D%25E8%2583%25BD%25E6%2598%25BE%25E7%25A4%25BA%25E4%25B8%25AD%25E6%2596%2587%25E7%25BD%2591%25E9%25A1%25B5&rsv_pq=d48710c8000517e3&rsv_t=5aabc%2BjcaqoKINi158Mkc%2F9ZEOnXvql%2F0XZbUzQVW3nYRyu29%2BPYEdH4RPY&rqlang=cn&rsv_enter=0&rsv_dl=tb&inputT=86833822&rsv_sug3=70&rsv_n=2&rsv_sug2=0&rsv_sug4=86833822

https://www.baidu.com/s?wd=delphi%20WebBroker%E7%BD%91%E7%AB%99&pn=10&oq=delphi%20WebBroker%E7%BD%91%E7%AB%99&tn=baiduhome_pg&ie=utf-8&rsv_idx=2&rsv_pq=f05c80de00037c0b&rsv_t=2131Cs%2F7D%2BtARMe3F%2Fq%2BabVUd%2FucahFx8GpBR6rDcefUITVFYRXb%2BwxFyuqzNKLRxY88

https://www.baidu.com/s?wd=TIdHTTPWebBrokerBridge%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8D%E8%83%BD%E6%98%BE%E7%A4%BA%E4%B8%AD%E6%96%87%E7%BD%91%E9%A1%B5&rsv_spt=1&rsv_iqid=0xa53d126d0003df92&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=0&rsv_dl=tb&oq=delphi%2520WebBroker%25E6%259C%258D%25E5%258A%25A1%25E5%2599%25A8%25E4%25B8%258D%25E8%2583%25BD%25E6%2598%25BE%25E7%25A4%25BA%25E4%25B8%25AD%25E6%2596%2587%25E7%25BD%2591%25E9%25A1%25B5&inputT=1992476&rsv_t=b2d3I3JlAtELCzyFEduvtM9LHU6y%2Fy4RwTduBWVPdqnJLtlal3N0HCz21MgsCTqCNRAt&rsv_pq=85467be9000ddd86&rsv_n=2&rsv_sug3=4&prefixsug=TIdHTTPWebBrokerBridge%25E6%259C%258D%25E5%258A%25A1%25E5%2599%25A8%25E4%25B8%258D%25E8%2583%25BD%25E6%2598%25BE%25E7%25A4%25BA%25E4%25B8%25AD%25E6%2596%2587%25E7%25BD%2591%25E9%25A1%25B5&rsp=0&rsv_sug4=1992476

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=delphi%20webbroker%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8D%E8%83%BD%E6%98%BE%E7%A4%BA%E4%B8%AD%E6%96%87%E7%BD%91%E9%A1%B5&oq=delphi%2520WebBroker%25E6%259C%258D%25E5%258A%25A1%25E5%2599%25A8%25E4%25B8%258D%25E8%2583%25BD%25E6%2598%25BE%25E7%25A4%25BA%25E4%25B8%25AD%25E6%2596%2587%25E7%25BD%2591%25E9%25A1%25B5&rsv_pq=b437ecba000412ee&rsv_t=dd3aJXfQc4YZJ61XeXq0iSsTMcUsUF3ohjSP0xGKfhrimE%2FyVY9dYWw9FZU&rqlang=cn&rsv_enter=0&rsv_dl=tb&inputT=107003&rsv_n=2&rsv_sug3=65&rsv_sug1=24&rsv_sug7=100&bs=delphi%20WebBroker%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8D%E8%83%BD%E6%98%BE%E7%A4%BA%E4%B8%AD%E6%96%87%E7%BD%91%E9%A1%B5

https://www.baidu.com/s?wd=WebBroker%E4%B8%AD%E6%96%87%E6%98%BE%E7%A4%BA%E4%B9%B1%E7%A0%81&rsv_spt=1&rsv_iqid=0xb64a2719001c606e&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=0&rsv_dl=tb&rsv_t=971b%2FkYeVWFaN75Y1maNZvc1HV56vbydHVeKKkp4Vz9V%2BEbx2QLKSJfukbpgQKRnQuKz&oq=jTable%25E4%25B8%25AD%25E6%2596%2587%25E6%2594%25AF%25E6%258C%2581&inputT=1305&rsv_pq=b3002de3000208c9&rsv_n=2&rsv_sug3=42&rsv_sug4=1306

经过几天的研究原生底层代码,解决如下,非常简单:

1、WebBroker的UTF-8字符集处理,是要依赖于这两个东东的:

2、你必须引用它们,才可以让后端与前端的H5代码相匹配!

uses Web.UTF8ContentParser, //:我加的

//Web.ReqMulti,

//:我加的:必须放在Web.UTF8ContentParser的后面,

//比如uploaded files,const sMultiPartFormData = 'multipart/form-data';

把它们分别:

引用到WebBroker桥接服务器所在程序单元  //LServer := TIdHTTPWebBrokerBridge.Create(nil);

引用到TWebModule所在程序单元 //TwmMain = class(TWebModule)

原文解释如下:

TUTF8ContentParser is a WebRequest content parser that parses UTF-8 requests.

TUTF8ContentParser class automatically replace the default content parser when this unit (UTF8ContentParser) is used in a web application.  You should only use UTF8ContentParser in web applications that generate UTF-8 responses.To generated UTF-8 encoded responses, set Response.ContentType as follows before setting Response.Content. Response.ContentType := 'text/html; charset=UTF-8';

Note that, if your application uses the ReqMulti unit to parse multipart content, ReqMulti must appear in the application uses list after UTF8ContentParser

译为:

TUTF8ContentParser是Web UTF-8请求的内容解析器(WebRequest content parser),用于Web应用程序的TUTF8ContentParser类会自动加载替换掉默认的内容解析器单元UTF8ContentParser。你应当在Web应用程序中用它来产生UTF-8的响应信息。为了产生UTF-8编码的响应信息,应当在响应内容Response.Content返回客户端之前,设置响应的内容类型Response.ContentType,格式如下:Response.ContentType := 'text/html; charset=UTF-8';另请注意:如果你的应用使用ReqMulti来解析“多部分内容”(multipart content,比如:Response.ContentType:='text/html,multipart/form-data;charset=UTF-8';),那么ReqMulti必须uses引用在TUTF8ContentParser之后。

3、特别注意:后端Response.ContentType := 'text/html; charset=UTF-8';的格式与前端不同,前端为:,有引号,后端无引号

procedure TwmMain.WebModuleAfterDispatch(

Sender: TObject;

Request: TWebRequest;

Response: TWebResponse; var Handled: Boolean);

begin

Response.ContentType:='text/html; charset=UTF-8';

end;

4、搞定,效果如下:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值