彻底解决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';的格式与前端不同,前端为:<meta 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、搞定,效果如下:

 

 

 

 

 

 

 

 

发布了61 篇原创文章 · 获赞 6 · 访问量 5550

猜你喜欢

转载自blog.csdn.net/pulledup/article/details/104699227
今日推荐