php数据库中文转码,php进行编码转换的函数

PHP 输出简单的中文 乱码问题

解决php中中文乱码问题方法

十载的潞州网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整潞州建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“潞州网站设计”,“潞州网站推广”以来,每个客户项目都认真落实执行。

php文件本身的编码与网页的编码应匹配

a. 如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/html; charset=gb2312"),静态页面添加meta http-equiv="Content-Type" content="text/html; charset=gb2312",所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。

b. 如果欲使用utf-8编码,那么php要输出头:header(“Content-Type: text/html; charset=utf-8"),静态页面添加meta http-equiv="Content-Type" content="text/html; charset=utf-8",所有文件的编码格式为utf-8。保存为utf-8可能会有点麻烦,一般utf-8文件开头会有BOM,如果使用session就会出问题,可用editplus来保存,在editplus中,工具-参数选择-文件-UTF-8签名,选择总是删除,再保存就可以去掉BOM信息了。

php本身不是Unicode的,所有substr之类的函数得改成mb_substr(需要装mbstring扩展);或者用iconv转码。

如果你的HTML文件文件出现了乱码问题,那么你可以在head标签里面加入UTF8编码(国际化编码):UTF-8是没有国家的编码,也就是独立于任何一种语言,任何语言都可以使用的。

扩展资料:

解决PHP 输出简单的中文 乱码问题的其他方法:

在php的echo前面加入header("Content-Type:text/html;charset=gb2312")

把meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /中的UTF-8改成gb2312

参考资料:

百度百科-PHP

如何正确运用PHP json_encode函数进行中文转换

在 php 中使用 json_encode() 内置函数(php 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式,但是转换后的中文会变成Unicode编码。

[php] view plaincopyprint?

?php

$arr = array

(

'Name'='希亚',

'Age'=20

);

$jsonencode = json_encode($arr);

echo $jsonencode;

?

程序运行结果如下:

[php] view plaincopyprint?

{"Name":null,"Age":20}

json_encode 函数中中文被编码成 null 了,Google 了一下,很简单,为了与前端紧密结合,Json 只支持 utf-8 编码,我认为是前端的 Javascript 也是 utf-8 的原因。

[php] view plaincopyprint?

?php

$array = array

(

'title'=iconv('gb2312','utf-8','这里是中文标题'),

'body'='abcd...'

);

echo json_encode($array);

?

这个程序的运行结果为:

[php] view plaincopyprint?

{"title":"\u8fd9\u91cc\u662f\u4e2d\u6587\u6807\u9898","body":"abcd..."}

数组中所有中文在json_encode之后都不见了或者出现\u2353等。解决方法是用urlencode()函数处理以下,在json_encode之前,把所有数组内所有内容都用urlencode()处理一下,然用json_encode()转换成json字符串,最后再用urldecode()将编码过的中文转回来。

[php] view plaincopyprint?

?php

/**************************************************************

*

* 使用特定function对数组中所有元素做处理

* @param string $array 要处理的字符串

* @param string $function 要执行的函数

* @return boolean $apply_to_keys_also 是否也应用到key上

* @access public

*

*************************************************************/

function arrayRecursive($array, $function, $apply_to_keys_also = false)

{

static $recursive_counter = 0;

if (++$recursive_counter 1000) {

die('possible deep recursion attack');

}

foreach ($array as $key = $value) {

if (is_array($value)) {

arrayRecursive($array[$key], $function, $apply_to_keys_also);

} else {

$array[$key] = $function($value);

}

if ($apply_to_keys_also is_string($key)) {

$new_key = $function($key);

if ($new_key != $key) {

$array[$new_key] = $array[$key];

unset($array[$key]);

}

}

}

$recursive_counter--;

}

/**************************************************************

*

* 将数组转换为JSON字符串(兼容中文)

* @param array $array 要转换的数组

* @return string 转换得到的json字符串

* @access public

*

*************************************************************/

function JSON($array) {

arrayRecursive($array, 'urlencode', true);

$json = json_encode($array);

return urldecode($json);

}

$array = array

(

'Name'='希亚',

'Age'=20

);

echo JSON($array);

?

这次成功了,运行结果如下:

[php] view plaincopyprint?

{"Name":"希亚","Age":"20"}

php中中文如何转码

应该是没有URL编码(一般来说,用默认字符集是没有问题的)。

URL编码/解码,可用函数urlencode()与urldecode()。

还有一个小问题,你有个地方打错了,在表单中把playerName打成了playerNmae,而iframe的URL中却是playerName。

iframe代码改为(你的拼写错误已修正):

iframe id="aaa" name="aaa" width="600" height="500" src="网址/playerDetail.php?serverName=?php echo urlencode($_GET["serverName"]); ?playerName=?php echo urlencode($_GET["playerName"]); ?"/iframe

表单代码改为:

form action="22.php" method="get"

服务器: input type="text" name="serverName" /br /

玩家名: input type="text" name="playerName" /br /

input type="submit" /

/form

再试试?

为什么 数据库提取中文是乱码?

从后台读取数据时,通常会出现乱码情况,比如“汉字”变成“?”等,造成这种情况的原因通常是编码设置不对,解决方法如下:

第一种方法:在php中添加如下代码,将编码格式设为“utf-8”,代码如下:

header("Content-Type: text/html; charset=UTF-8");

第二种方法:在php中添加另外一行代码,同样用来转码,代码如下:

$conn = mysqli_connect($servername, $username, $password, $mysqlname);

$conn-query("SET NAMES utf8");

该种情况是先创建链接,之后再转码。

另外,在使用数据库时,直接手动(非代码)建表,通常会在表中输入汉字时,浏览时无法显示或显示为“?”,造成这种情况的原因也是编码问题,解决方案如下:

在建表或建库时,表和库的编码格式一定要统一,设置成:“utf8_general_ci”,如下图:

PHP语言包中文转码问题

一、你保存的PHP文件的编码是什么?选择ANSI、UTF-8、UNICODE

二、然后你浏览器页面上选择的编码方式要和上面的一致即可,否则乱码

三、PHP文件可以控制浏览器选择的编码方式

例如:

建议你文件保存为ANSI编码,那么在PHP里面增加下面语句选择GB2312编码(放在网页的head/head里面):

meta HTTP-EQUIV="Content-Type" Content="text-html; charset=gb2312"

php通过odbc用sql语句查询时无法查询中文,应该怎么转码

咱们以MYSQL为例吧。

MYSQL数据库存在着编码问题,主要体现在数据库里汉字会出现乱码,WEB页面汉字显示不正常。

归结起来只有一个原因:会出现编码的地方存在编码不一致。

WEB开发中:MYSQL编码主要会出现在五个地方:

1. mysql安装的默认编码(latin1)-在mysql.ini(mysql安装根目录下)中设置。[mysqld]选项,默认没有。添加即在最后一行加入default-character-set=utf8。

2.mysql数据库的编码,原则上默认的编码是mysql安装的默认编码,也可以在建库时用语句来执行:create databasedbname default character set utf8;我这里是建立一个utf8编码的dbname数据库。

3.mysql数据表的编码,原则上默认是第二步建立的数据库的编码。提倡不要在creat table时加上编码

4.利用程序建立mysql连接时,连接字符串使用的编码。如jdbc,php mysql_connect(),这个地方必须是与你页面的编码一致。

5.WEB程序页面的编码,charset=utf8;与4必须一致。

除上面5个地方外,另有一个不是编码者所能控制的,那就是浏览用户的浏览器的编码,一般是自动选择,就不列入了。

上述五个地方,我所知道的保证不出现乱码的方法是:

1 无所谓,但是如果可以调整的话,可以设置成你所需要统一的一个编码,如utf8

2,3比较重要,我所理解的必须是一致。建议是在建库语句时带上编码,建表时就不指定编码了。

4是必须的,php下:$link = mysql_connect('localhost', 'root', '') or die('Could not connect: ' . mysql_error());

echo 'Connected successfully';

mysql_select_db('wordpress') or die('Could not select database');

mysql_query("set names utf8;"); //这句

如利用PDO的话 $dbh = new PDO($dsn, $config['db']['username'], $config['db']['password']);

$dbh-exec('SET CHARACTER SET utf8'); //这句

5在WEB页面中必须设置成上面的统一的编码。

请不要结束,继续往下看:上述方法中必须统一是统一的编码,我使用的是utf8,为什么使用utf8是我正要说的。


网站标题:php数据库中文转码,php进行编码转换的函数
文章地址:http://azwzsj.com/article/dscescs.html