页面乱码,有解决的方案吗?
谢谢
15 个解决方案
#1
页面修改编码如果含有汉字就太麻烦,直接修改数据库,将数据库导出.sql文件,然后打开查找并修改
CHARACTER SET utf8
然后再导入
CHARACTER SET utf8
然后再导入
#2
把编码统一!要用GBK,数据库,程序,页面都用gbk,用utf-8,那就都用utf-8!
#3
mysql_query("set names gbk");
#4
数据库编码和页面编码要一致,
#5
1.首先用下面的函數改變數據庫編碼為'utf8_unicode_ci'
2.改變好了的話在加上mysql_query("set names 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);
}
}
}
}
#6
mysqlfont可以直接改数据库
#7
哦,是这样的
之前网站一直用GBK, 现在其它软件想调用网站数据,需要PHP提供json格式数据,这个PHP文件需要UTF8编码
在不改变数据库编码的情况下,怎么实现呢?
谢谢楼上各位热心帮助
之前网站一直用GBK, 现在其它软件想调用网站数据,需要PHP提供json格式数据,这个PHP文件需要UTF8编码
在不改变数据库编码的情况下,怎么实现呢?
谢谢楼上各位热心帮助
#8
本办法:
就爱那个你的页面代码复制到记事本;
新建utf8文件,将记事本内容移至该文件;
修改汉字。
……
Dreamweaver可以重新加载不同编码的文件
就爱那个你的页面代码复制到记事本;
新建utf8文件,将记事本内容移至该文件;
修改汉字。
……
Dreamweaver可以重新加载不同编码的文件
#9
选择数据库后执行一下
mysql_query('set names utf8');
mysql_query('set names utf8');
#10
#11
如果不改變數據庫編碼的話就比較麻煩了。
你要在每個文件上面加上
<?php
header("Content-Type:text/html;charset=gbk");
如果還有亂碼的話,數據庫連接時在加上
mysql_query('set names gbk');
?>
#12
mysql 改字符集这么容易么?
#13
要改mysql字符集干什么? set names 只是改了会话语言
就如同你和英国人交流是用英语,和日本人交流用日语,或者让他们用国语,是一个道理
就如同你和英国人交流是用英语,和日本人交流用日语,或者让他们用国语,是一个道理
#14
涉及到mysql设置的客户端编码以及server端返回的编码以及数据库自身编码,只有这样mysql才能在内部正确的转来转去。
set names utf8只是设置客户端query的编码,如果query里没有非ASCII字符是没用的。这个问题本身就不单纯,楼主还是先统一数据库的server,client,database三个编码之后再说吧。
set names utf8只是设置客户端query的编码,如果query里没有非ASCII字符是没用的。这个问题本身就不单纯,楼主还是先统一数据库的server,client,database三个编码之后再说吧。
#15
数据库连接编码:指的是进行数据库操作时候以哪种编码与数据库传输数据,这里需要注意的是不要与数据库本身的编码混淆,比如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
知道了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
#1
页面修改编码如果含有汉字就太麻烦,直接修改数据库,将数据库导出.sql文件,然后打开查找并修改
CHARACTER SET utf8
然后再导入
CHARACTER SET utf8
然后再导入
#2
把编码统一!要用GBK,数据库,程序,页面都用gbk,用utf-8,那就都用utf-8!
#3
mysql_query("set names gbk");
#4
数据库编码和页面编码要一致,
#5
1.首先用下面的函數改變數據庫編碼為'utf8_unicode_ci'
2.改變好了的話在加上mysql_query("set names 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);
}
}
}
}
#6
mysqlfont可以直接改数据库
#7
哦,是这样的
之前网站一直用GBK, 现在其它软件想调用网站数据,需要PHP提供json格式数据,这个PHP文件需要UTF8编码
在不改变数据库编码的情况下,怎么实现呢?
谢谢楼上各位热心帮助
之前网站一直用GBK, 现在其它软件想调用网站数据,需要PHP提供json格式数据,这个PHP文件需要UTF8编码
在不改变数据库编码的情况下,怎么实现呢?
谢谢楼上各位热心帮助
#8
本办法:
就爱那个你的页面代码复制到记事本;
新建utf8文件,将记事本内容移至该文件;
修改汉字。
……
Dreamweaver可以重新加载不同编码的文件
就爱那个你的页面代码复制到记事本;
新建utf8文件,将记事本内容移至该文件;
修改汉字。
……
Dreamweaver可以重新加载不同编码的文件
#9
选择数据库后执行一下
mysql_query('set names utf8');
mysql_query('set names utf8');
#10
#11
如果不改變數據庫編碼的話就比較麻煩了。
你要在每個文件上面加上
<?php
header("Content-Type:text/html;charset=gbk");
如果還有亂碼的話,數據庫連接時在加上
mysql_query('set names gbk');
?>
#12
mysql 改字符集这么容易么?
#13
要改mysql字符集干什么? set names 只是改了会话语言
就如同你和英国人交流是用英语,和日本人交流用日语,或者让他们用国语,是一个道理
就如同你和英国人交流是用英语,和日本人交流用日语,或者让他们用国语,是一个道理
#14
涉及到mysql设置的客户端编码以及server端返回的编码以及数据库自身编码,只有这样mysql才能在内部正确的转来转去。
set names utf8只是设置客户端query的编码,如果query里没有非ASCII字符是没用的。这个问题本身就不单纯,楼主还是先统一数据库的server,client,database三个编码之后再说吧。
set names utf8只是设置客户端query的编码,如果query里没有非ASCII字符是没用的。这个问题本身就不单纯,楼主还是先统一数据库的server,client,database三个编码之后再说吧。
#15
数据库连接编码:指的是进行数据库操作时候以哪种编码与数据库传输数据,这里需要注意的是不要与数据库本身的编码混淆,比如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
知道了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