数据库编码GBK,页面是UTF8 数据库编码GBK,页面是UTF8页面乱码,有解决的方案吗?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 页面修改编码如果含有汉字就太麻烦,直接修改数据库,将数据库导出.sql文件,然后打开查找并修改CHARACTER SET utf8然后再导入 把编码统一!要用GBK,数据库,程序,页面都用gbk,用utf-8,那就都用utf-8! mysql_query("set names gbk"); 1.首先用下面的函數改變數據庫編碼為'utf8_unicode_ci'2.改變好了的話在加上mysql_query("set names utf8");function change_code($db='',$code = 'utf8_unicode_ci'){ $arr = explode('_',$code); $s = $arr[0]; mysql_select_db($db); $sql = "ALTER DATABASE `$db` DEFAULT CHARACTER SET $s COLLATE $code"; mysql_query($sql); $sql = "SHOW TABLE STATUS FROM $db "; $result = mysql_query($sql); while($row = mysql_fetch_array($result)) { if($row['Collation'] != $code){ $sql = "ALTER TABLE `{$row['Name']}` DEFAULT CHARACTER SET $s COLLATE $code"; mysql_query($sql); } $sql = "SHOW FULL COLUMNS FROM `{$row['Name']}`"; $result2 = mysql_query($sql); while($row2 = mysql_fetch_array($result2)) { $null = $row2['Null'] == 'YES'?'NULL':'NOT NULL'; if(is_null($row2['Default']) && $row2['Null'] == 'YES'){ $default = 'NULL'; }elseif(is_null($row2['Default']) && $row2['Null'] == 'NO'){ $default = "''"; }else{ $default = "'{$row2['Default']}'"; } if($row2['Collation'] != $code && !is_null($row2['Collation'])){ $sql = "ALTER TABLE `{$row['Name']}` CHANGE `{$row2['Field']}` `{$row2['Field']}` {$row2['Type']} CHARACTER SET $s COLLATE $code $null DEFAULT $default"; mysql_query($sql); } } }} 哦,是这样的之前网站一直用GBK, 现在其它软件想调用网站数据,需要PHP提供json格式数据,这个PHP文件需要UTF8编码在不改变数据库编码的情况下,怎么实现呢?谢谢楼上各位热心帮助 本办法:就爱那个你的页面代码复制到记事本;新建utf8文件,将记事本内容移至该文件;修改汉字。……Dreamweaver可以重新加载不同编码的文件 选择数据库后执行一下mysql_query('set names utf8'); 如果不改變數據庫編碼的話就比較麻煩了。你要在每個文件上面加上<?php header("Content-Type:text/html;charset=gbk"); 如果還有亂碼的話,數據庫連接時在加上 mysql_query('set names gbk');?> mysql 改字符集这么容易么? 要改mysql字符集干什么? set names 只是改了会话语言就如同你和英国人交流是用英语,和日本人交流用日语,或者让他们用国语,是一个道理 涉及到mysql设置的客户端编码以及server端返回的编码以及数据库自身编码,只有这样mysql才能在内部正确的转来转去。set names utf8只是设置客户端query的编码,如果query里没有非ASCII字符是没用的。这个问题本身就不单纯,楼主还是先统一数据库的server,client,database三个编码之后再说吧。 数据库连接编码:指的是进行数据库操作时候以哪种编码与数据库传输数据,这里需要注意的是不要与数据库本身的编码混淆,比如MySQL内部默认是latin1编码,也就是说Mysql是以latin1编码来存储数据,以其他编码传输给Mysql的数据会被转换成latin1编码。知道了WEB开发中哪些地方涉及到了编码,也就知道了PHP页面乱码产生的原因:上述3项编码设置不一致,由于各种编码绝大部分是兼容ASCII的,所以英文符号不会出现,中文就倒霉了。下面是一些常见的错误情况与解决:1、数据库采用GB2312编码,而页面申明编码是UTF8,这是最常见的产生乱码的原因。这时候在PHP脚本里面直接SELECT数据出来的就是PHP页面乱码,需要在查询前先使用:mysql_query("SET NAMES UTF8"); 来设定MYSQL连接编码,保证页面申明编码与这里设定的连接编码一致(GBK是GB2312的扩展)。如果页面是UTF-8编码的话,可以用:mysql_query("SET NAMES UTF8"); 注意是UTF8而不是一般用的UTF-8。假如页面申明的编码与数据库内部编码一致可以不设定连接编码。详细原文:http://www.phpnewer.com/index.php/Cjwt/detail/id/367 php如何判断一个字所占的字节数。 如何提高自己的编程技术 phpmailer 在IIS + windows2003下面怎么用的?求高人详细解说~~ 请教Discuz!论坛的关键字过滤模块对应源码文件是什么 邮件服务器得一个问题,关于http-header 关于PHP+MSSQL数据库操作编写问题?!想写一个数据库类 win下安装wdb的问题 oracel出错, SMARTY的问题: 高手高手在哪里 php同页面传值怎么写? 我现在知道类 对象 接口 但我不知道一个项目应该怎么构架类 行为 属性请问我应该看那方面的书呀~~
CHARACTER SET utf8
然后再导入
2.改變好了的話在加上mysql_query("set names utf8");
function change_code($db='',$code = 'utf8_unicode_ci')
{
$arr = explode('_',$code);
$s = $arr[0];
mysql_select_db($db);
$sql = "ALTER DATABASE `$db` DEFAULT CHARACTER SET $s COLLATE $code";
mysql_query($sql);
$sql = "SHOW TABLE STATUS FROM $db ";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
if($row['Collation'] != $code){
$sql = "ALTER TABLE `{$row['Name']}` DEFAULT CHARACTER SET $s COLLATE $code";
mysql_query($sql);
}
$sql = "SHOW FULL COLUMNS FROM `{$row['Name']}`";
$result2 = mysql_query($sql);
while($row2 = mysql_fetch_array($result2))
{
$null = $row2['Null'] == 'YES'?'NULL':'NOT NULL';
if(is_null($row2['Default']) && $row2['Null'] == 'YES'){
$default = 'NULL';
}elseif(is_null($row2['Default']) && $row2['Null'] == 'NO'){
$default = "''";
}else{
$default = "'{$row2['Default']}'";
}
if($row2['Collation'] != $code && !is_null($row2['Collation'])){
$sql = "ALTER TABLE `{$row['Name']}` CHANGE `{$row2['Field']}` `{$row2['Field']}` {$row2['Type']} CHARACTER SET $s COLLATE $code $null DEFAULT $default";
mysql_query($sql);
}
}
}
}
就爱那个你的页面代码复制到记事本;
新建utf8文件,将记事本内容移至该文件;
修改汉字。
……
Dreamweaver可以重新加载不同编码的文件
mysql_query('set names utf8');
你要在每個文件上面加上
<?php
header("Content-Type:text/html;charset=gbk");
如果還有亂碼的話,數據庫連接時在加上
mysql_query('set names gbk');
?>
就如同你和英国人交流是用英语,和日本人交流用日语,或者让他们用国语,是一个道理
mysql_query("SET NAMES UTF8"); 注意是UTF8而不是一般用的UTF-8。假如页面申明的编码与数据库内部编码一致可以不设定连接编码。详细原文:http://www.phpnewer.com/index.php/Cjwt/detail/id/367