插入到mysql的是中文,但select的时候显示乱码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了插入到mysql的是中文,但select的时候显示乱码相关的知识,希望对你有一定的参考价值。
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
+--------------------------+--------+
应该是字符集的错误,请问怎么更改啊
我百度了之后,修改了,但是重启mysql之后,又变回成这样,求助!
解决方案:
1. 解决html乱码
要设置<meta http-equiv="Content-Type" content="text/html; charset=uft8">。
-------------------------------------------------------------------------------------------------------
2. 解决php页面乱码
建议在PHP页面头部写: header("Content-type: text/html; charset=utf-8");
<?php
//引入smarty配置文件
//smarty出现乱码解决方案: 重写truncate截取字符的方法
header("Content-type: text/html; charset=utf-8");
include_once("smarty_conn.php");
$name = "PHP100视频教程";
//数组只能是默认的数字索引
$arry = array("陈进",22);
$arr[] = array("name"=>"陈进","age"=>22);
$arr[] = array("name"=>"陈进","age"=>22);
$arr[] = array("name"=>"陈进","age"=>22);
$arr[] = array("name"=>"陈进","age"=>22);
$smarty->assign("title",$name);
$smarty->assign("arry",$arry);
$smarty->assign("t_array",$arr);
$smarty->display("index.html");
?>
-------------------------------------------------------------------------------------------------------
3.解决mysql乱码
在数据库插入的PHP页面写:mysql_query("set names 'gbk'"),
另外建议数据库DB字符集为utf8, 建表的时候 最后请写上: default charset=utf8;
如此永远不会出现乱码了
<?php
define('CLIENT_MULTI_RESULTS', 131072);
$mysql_server_name="localhost";
$mysql_username="root";
$mysql_userpwd="123456";
$mysql_database="news_DB";
$link=@mysql_connect($mysql_server_name,$mysql_username,$mysql_userpwd,CLIENT_MULTI_RESULTS)
or die("Could not connect: ".mysql_error());
mysql_select_db($mysql_database,$link) or die("Could not select database");
mysql_query("set names 'gbk'");//使用中文编码
//php写入mysql的编码,防止mysql出现乱码
//一个替换函数,替换换行和回车
function htmtocode($content)
$content = str_replace("\n","<br/>",str_replace(" "," ",$content));
return $content;
?>
希望我的回答能帮助楼主,祝你学习更上一层楼 参考技术A 在代码中加上这一句mysql_query("set name 'utf8'");
就可以了。另外html要设置<meta http-equiv="Content-Type" content="text/html; charset=uft8">。
记住:utf8只是一种字符集,实际使用中可用不同的字符集,但一定要php和html保持一致。
JSP之mysql中文乱码问题
查看数据库编码方式
show variables like ‘character%‘;
关于jsp页面插入数据库乱码问题。
我遇到的问题是插入数据库后后台select * from tablename
及jsp网页out.println显示的中文均显示??
解决方案:
show variables like ‘character%‘ 很多数据库默认的是Latin1
此时要将显示的编码方式不同的均改一致的显示,其中character_set_system无法修改;
这里在jsp编码时,我的开头设置为utf-8:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
数据库编码我也将其改为utf-8的编码方式:
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_database=utf8;
set character_set_server=utf8;
当然,在mysql的配置文件中也将character_set_server = utf8添加到了倒数第二行(一个空行);
之后,一定要记住要重新建表!!!
以上是关于插入到mysql的是中文,但select的时候显示乱码的主要内容,如果未能解决你的问题,请参考以下文章