插入到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之后,又变回成这样,求助!

我以前自学php的时候也被这个问题挠头过,希望楼主能熬过这段时间!!
解决方案:
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的时候显示乱码的主要内容,如果未能解决你的问题,请参考以下文章

mysql 不能插入中文和显示中文

MySql中插入乱码问题解决

最后插入的记录未反映在使用 JDBC 的 mysql 中的 select 语句中

JSP之mysql中文乱码问题

mysql往数据库插入float类型的数据 为啥数字不对?

mysql中自动插入时间的格式。 我使用mysql 数据库中设置,当有一条数据插入的时候,会自动插入当前时间…