您的位置:首页 > 数据库

数据库表由编码latin1_swedish_ci插入到另一张UTF-8的编码的表中

2015-12-01 21:18 330 查看
由于数据库编码的改变,所以数据的插入和查看都是乱码问题,所以需要转化一下编码。

一.转化编码

PHP给我们提供了一个转化函数
iconv

iconv —字符串按要求的字符编码来转换

说明

stringiconv
( string
$in_charset

, string
$out_charset

, string
$str

)
将字符串
str
in_charset
转换编码到
out_charset

二.如果你的数据表数据比较多,需要设置PHP的运行时间,PHP默认的运行时间是30秒
改变PHP脚本运行时间的方法
1.在php.ini里面设置
max_execution_time=120;
2.通过PHP的ini_set函数设置
ini_set("max_execution_time","120");
3.通过set_time_limit函数设置
set_time_limit(120);
以上几个数字设置为0则无限制,默认一般是30秒.可以在脚本使用函数修改

.三.数据库插入的时候,如果是文章的话,文章里面有引号的话,需要用htmlspecialchars 函数,把里面的符号转化成HTML实体

htmlspecialchars —Convert special characters to HTML
entities

取出数据库的时候需要把实体转化为正常字符,使用htmlspecialchars_decode 函数

htmlspecialchars_decode —将特殊的 HTML 实体转换回普通字符

我的代码如下

<?php

ini_set("max_execution_time",10000);

mysql_connect('localhost','root','123456') or die('数据库连接错误');

mysql_select_db('dream') or die('数据库选择错误');

mysql_query('set names latin1');

$sql="select * from zhuanti_dream";

$rs = mysql_query($sql);

while($row = mysql_fetch_assoc($rs)){

$id=$row['id'];

//数据库中表名为titile,比title多了一个i

$title=iconv('gbk','UTF-8',$row['titile']);

$info=iconv('gbk','UTF-8',$row['info']);

$info=htmlspecialchars($info, ENT_QUOTES);

$zuozhe=iconv('gbk','UTF-8',$row['zuozhe']);

$jianjie=$row['jianjie'];

if(is_string($jianjie)){

$jianjie=iconv('gbk','UTF-8',$row['jianjie']);

}

$time=$row['time'];

$dianji=$row['dianji'];

$tuijian=$row['tuijian'];

$fenlei=$row['fenlei'];

mysql_select_db('lxxn');

mysql_query('set names utf8');

$sql="insert into shuju (id,titile,info,zuozhe,time,dianji,tuijian,fenlei)

values

(null,'$title','$info','$zuozhe','$time','$dianji','$tuijian','$fenlei')";

$a=mysql_query($sql);

//下面为测试数据是否插入成功

if($a){

echo '1','<br />';

}else{

echo $row['id'],'<br />';

echo $sql;

echo '0','<br />';

}

}

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: