Delphi6下使用Indy10组件包,其中的TIdHttpServer控件在处理HTTP请求的时候

不能正确解码含有汉字的参数,如:
http://127.0.0.1/test?cmd=open&areaname=测试&areadir=D:\test

 
对于这个Url,Chrome默认按UTF-8编码发送,IE默认按GBK编码发送,而这两种情况,TIdHttpServer的CommandGet事件中TIdHTTPRequestInfo.Params.Values['areaname']返回的均为乱码。
 
用POST方式测试,也存在同样的问题。
 
经过分析Indy的源码,发现主要是由于TIdHTTPRequestInfo类,没有代码来为它设置CharSet(当返回HTML页面的时候,倒是可以通过TIdHttpResponseInfo.CharSet := 'UTF-8'; 按正确的编码返回。)
 
没有好的办法解决,最后只有手动修改Indy的代码,在TIdHTTPRequestInfo.DecodeAndSetParams()函数中增加一行:
 

http://www.cnblogs.com/ddgg/archive/2013/03/10/2952859.html

解决Delphi的Indy10组件包TIdHttpServer控件解码HTTP请求时参数乱码的问题的更多相关文章

  1. 用delphi制作无界面的activex控件

    首先,您要了解: •COM的基本原理 •能被网页调用的非可视ActiveX控件必须是一种至少实现了IOleObject接口的TAutoObject组件 •利用Delphi向导生成的ActiveX控件必 ...

  2. winform快速开发平台 -> 基础组件之分页控件

    一个项目控件主要由及部分的常用组件,当然本次介绍的是通用分页控件. 处理思想:我们在处理分页过程中主要是针对数据库操作. 一般情况主要是传递一些开始位置,当前页数,和数据总页数以及相关关联的业务逻辑. ...

  3. Android support library支持包常用控件介绍(一)

    谷歌官方推出Material Design 设计理念已经有段时间了,为支持更方便的实现Material Design设计效果,官方给出了Android support design library 支 ...

  4. Android support library支持包常用控件介绍(二)

    谷歌官方推出Material Design 设计理念已经有段时间了,为支持更方便的实现 Material Design设计效果,官方给出了Android support design library ...

  5. Delphi 获取当前鼠标下的控件内容

    Delphi 获取当前鼠标下的控件内容 主要函数: GetCursorPos://获取鼠标的位置 WindowFromPoint://获取制定point下的handle GetClassName:// ...

  6. 解决tableView中cell动态加载控件的重用问题

    解决tableView中cell动态加载控件的重用问题 tableView的cell,有时候需要在运行时取得对应的数据后才能够动态的创建该cell中的控件并加载到该cell中,此时,你一定会遇到重用问 ...

  7. 解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件

    解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件的问题 http://marller.blog.51cto.com/8699646/1762028 FAQ: Surf ...

  8. Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView、TTreeViewItem

    Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView.TTreeViewItem TScrollBox -> TCustomTreeView -> ...

  9. Delphi XE2 之 FireMonkey 入门(43) - 控件基础: TStringGrid、TGrid

    Delphi XE2 之 FireMonkey 入门(43) - 控件基础: TStringGrid.TGrid TStringGrid.TGrid 都是从 TCustomGrid 继承; 区别有:1 ...

随机推荐

  1. TensorFlow 学习(十一)—— 正则(regularizer)

    正则作用的对象是目标函数,如图对均方误差使用 ℓ2 正则: loss = tf.reduce_mean(tf.square(y-y_) + tf.contrib.layers.l2_regulariz ...

  2. 解决 ubuntu 14.04.1 下一个sublime text3 3065 中国输入的问题

    你看今天 sublime text3 我以前有没有3059 的  它有支持3065该. 因此,为了支持subl  对中国输入法的实现 ,下面的操作步骤把我的记录供大家使用 有一个完整的教程:  htt ...

  3. 常见Python 中pip用法(待继续添加)

    常见pip用法 * pip install numpy             --安装包numpy * pip uninstall numpy           --卸载包numpy * pip ...

  4. java server wrapper 和 maven assembly 插件

    Java Service Wrapper工具YAJSW 简介信息 YAJSW是一个开源的Java服务包装(Java Service Wrapper)工具.YAJSW允许您把任何应用程序安装为windo ...

  5. LeetCode: Generate Parentheses [021]

    [称号] Given n pairs of parentheses, write a function to generate all combinations of well-formed pare ...

  6. java中 8进制 10进制 2进制 16进制 相互转换

    十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinar ...

  7. Cannot refer to a non-final variable inside an inner class defined in a different method

    http://stackoverflow.com/questions/1299837/cannot-refer-to-a-non-final-variable-inside-an-inner-clas ...

  8. 《The Economist》的阅读

    cover story(封面故事): Clean energy's dirty secret:清洁能源的肮脏幕后: 0. 词汇 respite:n. 缓解:暂缓:暂时的休息:缓期执行:也作及物动词(v ...

  9. 我所理解的设计模式(C++实现)——观察者模式(Observer Pattern)

    概述: 近期中国股市起起伏伏,当然了起伏就用商机,小明发现商机后果断想入市,买入了中国证券,他想在电脑client上,网页上,手机上,iPad上都能够查看到该证券的实时行情,这样的情况下我们应该怎么设 ...

  10. 统计web訪问前10的ip

    cat access.log|awk '{print $0}'|sort|uniq -c|sort -nr|head -n 10