get或post方式传特殊字符串的问题

时间:2023-01-06 12:58:03
在多数情况下使用javascript的encodeURIComponent对传的字符串编码后使用get或post发送到服务器端不会有问题,但是碰到“——”(打开中文输入法输入"-"减号)字符,在服务器端使用iconv转换为gb2312码就会将“——”后的字符全部丢弃。不知各位有什么方法解决这问题(除掉把服务器端改utf-8编码方法)?

9 个解决方案

#1


$s=iconv('UTF-8', 'gb2312//IGNORE' , $string);  

#2


http://plog.longwin.com.tw/my_note-programming/2010/01/14/javascript-encodeuri-component-utf-8-2010

#3


用gb2312是自己找麻烦,纯utf8可以避免很多编码烦恼

#4


感谢楼上的回答

1楼 答案是似乎不太完美,iconv('UTF-8', 'gb2312//IGNORE' , $string)是丢弃了iconv不能转化的字符

2楼 网址没有解决只是解释了encodeURIComponent函数

3楼 不能确定客户使用的编码因此还是要考虑的

看看还有没有更好的答案。

#5


<script type="text/javascript" language="javascript" charset=" utf-8"></script>

#6


引用 4 楼 luojxun 的回复:
不能确定客户使用的编码因此还是要考虑的

请教lz  这句话怎么理解

#7


引用 4 楼 luojxun 的回复:
感谢楼上的回答

1楼 答案是似乎不太完美,iconv('UTF-8', 'gb2312//IGNORE' , $string)是丢弃了iconv不能转化的字符

2楼 网址没有解决只是解释了encodeURIComponent函数

3楼 不能确定客户使用的编码因此还是要考虑的

看看还有没有更好的答案。

试试mb_convert_encoding 要先开发扩展库php_mbstring.dll 
<?php 
$str = mb_convert_encoding($str, "gb2312", "UTF-8");
?>

#8


to楼上:我没说明白,就是让客户选择使用什么编码。

另:找到一个完美解决方案mb_convert_encoding($_POST['logcon'], "GB2312", 'UTF-8');不会忽略“——”
结贴。

#9


呵呵,7楼早了一步。

#1


$s=iconv('UTF-8', 'gb2312//IGNORE' , $string);  

#2


http://plog.longwin.com.tw/my_note-programming/2010/01/14/javascript-encodeuri-component-utf-8-2010

#3


用gb2312是自己找麻烦,纯utf8可以避免很多编码烦恼

#4


感谢楼上的回答

1楼 答案是似乎不太完美,iconv('UTF-8', 'gb2312//IGNORE' , $string)是丢弃了iconv不能转化的字符

2楼 网址没有解决只是解释了encodeURIComponent函数

3楼 不能确定客户使用的编码因此还是要考虑的

看看还有没有更好的答案。

#5


<script type="text/javascript" language="javascript" charset=" utf-8"></script>

#6


引用 4 楼 luojxun 的回复:
不能确定客户使用的编码因此还是要考虑的

请教lz  这句话怎么理解

#7


引用 4 楼 luojxun 的回复:
感谢楼上的回答

1楼 答案是似乎不太完美,iconv('UTF-8', 'gb2312//IGNORE' , $string)是丢弃了iconv不能转化的字符

2楼 网址没有解决只是解释了encodeURIComponent函数

3楼 不能确定客户使用的编码因此还是要考虑的

看看还有没有更好的答案。

试试mb_convert_encoding 要先开发扩展库php_mbstring.dll 
<?php 
$str = mb_convert_encoding($str, "gb2312", "UTF-8");
?>

#8


to楼上:我没说明白,就是让客户选择使用什么编码。

另:找到一个完美解决方案mb_convert_encoding($_POST['logcon'], "GB2312", 'UTF-8');不会忽略“——”
结贴。

#9


呵呵,7楼早了一步。