前几天在调程序的时候遇到了比较郁闷的问题我用URL从一个页面传递字符串到另一个页面的时出现了个奇怪的问题我要传递的字符串是DK+中继站可是另一个页面接收到字符串却是DK 中继口加号变成了空格站不能解析出来变成了不能识别的符号口 我上网查找了原因URL中有些字符被转义比如空格被编码成加号于是传的参数明明是加号获取的值却成了空格 按照网上的建议我们应该对要传递的参数进行编码处理于是我对传递的参数进行了处理但是又衍生了一堆问题出来我当时为了节约时间就没有仔细研究用了字符串中的Replace()方法在传送前代替了这两个字符接收到了再代替回来现在我来具体的展示下这个问题 首先我们先看下我的开始的问题(环境VS) 新建一个网站在其中添加一个页面一个页面是Defaulaspx另一个页面Defaulaspx在第一个页面中添加一个控件HyperLink后台代码 在第二个页面中添加一个Label控件Label后台代码 结果显示DK 中继口 我当时的解决方法用了字符串中的Replace()方法在传送前代替了这两个字符接收到了再代替回来 第一个页面的后台代码第二个页面中后台代码 结果是DK+中继站正确! 后来我在网上找到这个这样的设置在Webconfig中设置 这样的话就不需要替代中文了只需要把+替代中文在这个过程就不会出现问题了 但是这样的传递中文可能还会遇到其他中文字出问题最好是采用下面的方法将中文参数编码 我采用URLEncode()编码采用URLEncode()不在Webconfig中设置好像也可以在我的测试中没有问题但是为了安全我们还是添加上上面的设置 页面上都是一致的第一页面的后台代码第二个页面中后台代码 结果是DK+中继站正确! 后来我在网上找到这个这样的设置在Webconfig中设置 这样的话就不需要替代中文了只需要把+替代中文在这个过程就不会出现问题了 但是这样的传递中文可能还会遇到其他中文字出问题最好是采用下面的方法将中文参数编码 我采用URLEncode()编码采用URLEncode()不在Webconfig中设置好像也可以在我的测试中没有问题但是为了安全我们还是添加上上面的设置 [] [] |