php超链接传值中文乱码,PHP Ajax传值中文字符乱码如何解决_php

在php网站开发中,为了增加用户体验度,Ajax是一种经常使用的技术,但是对于初学者来说,时常会碰到Ajax传值中文字符串时变成乱码的问题,有什么办法可以解决PHP AJAX传值中文字符乱码的问题呢?

我们知道Ajax技术由JavaScript演变而来,而javascript使用UTF-8编码,当前后台页面采用GBK或者其他编码,同时没有进行编码转换时,就会出现中文字符乱码问题。

PHP Ajax传值中文字符乱码解决方法

方法一、前后台页面以及数据库统一采用UTF8编码,这是最简单的方法。

方法二、当网站已采用了诸如GBK/GB2312编码时,分两种情况:

1、Ajax发送中文字符、PHP(后台程序)进行接收发生乱码时,使用GBK与UTF8的转换函数对接受的字符串进行编码转换,再存入相关数据库,这里假设数据库采用的编码是GBK或者GB2312,如果配置的PHP运行环境支持ICONV函数,你也可使用ICONV函数进行编码转换,然后在存入数据库时

1

mysql_query("set names gb2312");

即可解决Ajax传值中文乱码问题。

2、PHP发送中文字符、Ajax(前台页面)进行接收发生乱码时,同样可以使用ICONV函数对从数据库中取出的字符串进行编码转换,再传值至Ajax前台,即responseText。或者在PHP(后台程序)输出字符流之前加上

1

header('Content-type: text/html;charset=gb2312');

即可。特别指出:在使用Ajax做多级联动(比如省份城市联动)时,采用xml交互形式,在输出XML之前也必须加上header。

同时贴出GB2312与UTF8的转换函数,方便大家在遇到Ajax中文乱码问题时多一种解决方法。

1

2

3

4

http://www.gaodaima.com/?p=49582PHP Ajax传值中文字符乱码如何解决_php

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

function gb2utf8($gb,$filename)

{

if(!trim($gb))

return $gb;

//$filename="gb2312.txt";

$tmp=file($filename);

$codetable=array();

while(list($key,$value)=each($tmp))

$codetable[hexdec(substr($value,0,6))]=substr($value,7,6);

$utf8="";

while($gb)

{

if (ord(substr($gb,0,1))>127)

{

$thisgb=substr($gb,0,2);

$gb=substr($gb,2,strlen($gb));

$utf8.=u2utf8(hexdec($codetable[hexdec(bin2hex($thisgb))-0x8080]));

}

else

{

$gb=substr($gb,1,strlen($gb));

$utf8.=u2utf8(substr($gb,0,1));

}

}

$ret="";

for($i=0;$i

$ret.=chr(substr($utf8,$i,3));

return $ret;

}

function u2utf8($c)

{

for($i=0;$i

$str="";

if ($c < 0x80) {

$str.=$c;

}

else if ($c < 0x800) {

$str.=(0xC0 $c>>6);

$str.=(0x80 $c & 0x3F);

}

else if ($c < 0x10000) {

$str.=(0xE0 $c>>12);

$str.=(0x80 $c>>6 & 0x3F);

$str.=(0x80 $c & 0x3F);

}

else if ($c < 0x200000) {

$str.=(0xF0 $c>>18);

$str.=(0x80 $c>>12 & 0x3F);

$str.=(0x80 $c>>6 & 0x3F);

$str.=(0x80 $c & 0x3F);

}

return $str;

}

注:此函数需要使用GB2312中文编码表,请点击这里下载,由于是采用gb2312,对于一些比较生僻的词在转换时可能会出现乱码。

注:PHP网站开发教程-leapsoul.cn版权所有,转载时请以链接形式注明原始出处及本声明,谢谢。

欢迎大家阅读《PHP Ajax传值中文字符乱码如何解决_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码

e7ce419cf2d6ad34d01da2ceb8829eed.png

微信 赏一包辣条吧~

023a57327877fb4402bcc76911ec18ea.png

支付宝 赏一听可乐吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值