中文乱码问题的解决方案(idea中文乱码问题)

lxf2023-06-07 00:20:01

PHP+MYSQL中文乱码问题
本文主要介绍了PHP+MYSQL中解决中文乱码问题的几种方法,非常实用,有需要的朋友可以借鉴。

从MySQL 4.1开始引入了多语言支持,但是PHP中插入的中文会出现乱码。不管用什么编码都不行。

解决这个问题其实很简单。

1.建表时设置编码类型为gb2312_chinese_ci。

2.在PHP页面的数据库连接语句中添加一行MySQL _ query ("set names' GB 2312 ' ",$ link);例如

1

2

10

$ db _ host = " localhost ";

$ db _ user = " root

$ db _ password = " password

$ db _ name = " test

$link=mysql_connect($db_host,$db_user,$ db _ password);

mysql_query("SET NAMES 'gb2312 ' ",$ link);

$db=mysql_select_db($db_name,$ link);

$ query = " select * from user

$ result = MySQL _ query($ query);

这一行增加了写页和读页,使MYSQL中的中文可以正常显示。

相关信息:

从MySQL 4.1开始引入了多语言支持,一些特性已经超越了其他数据库系统。

MySQL4.1的字符集支持有两个方面:字符集和排序规则。对字符集的支持细化为四个层次:服务器、数据库、表和连接。

通过下面两个命令检查系统的字符集和排序方式的设置:!

1

2

10

11

12

13

14

15

16

17

18

19

20

21

22

mysql >显示' character_set_% '这样的变量;

+ - + - +

|变量名称|值|

+ - + - +

| character_set_client | latin1 |

| character _ set _ connection | latin1 |

| character _ set _ database | latin1 |

| character_set_results | latin1 |

|字符设置服务器| latin1 |

|字符集系统| utf8 |

| character _ sets _ dir |/usr/share/MySQL/charsets/|

+ - + - +

一组7行(0.00秒)

mysql >显示类似‘collation _ %’的变量;

+ - + - +

|变量名称|值|

+ - + - +

|归类_连接|拉丁语1 _瑞典语_ci |

|归类_数据库|拉丁语1 _瑞典语_ci |

|排序规则_服务器| latin1 _瑞典语_ci |

+ - + - +

集合中的3行(0.00秒)

上面列出的值是系统的默认值。(很奇怪系统怎么会默认latin1的瑞典语排序方式。)...

当我们以原来的方式通过PHP访问MySQL数据库时,即使表的默认字符集是utf8,查询是通过UTF-8编码发送的,你也会发现数据库中存储的数据仍然是乱码。问题就出在这个连接层。解决方案是在发送查询之前执行以下语句:

设置名称“utf8”;

它相当于以下四条指令:

代码如下:

set character _ set _ client = utf8

set character _ set _ results = utf8

set character _ set _ connection = utf8;

set collation _ connection = utf8 _ general _ ci

因为默认网页提交的查询是gb2312(可以在表单页面meta中看到),mysql默认将其视为utf8(此时可以找到character_set_client=utf8),所以必然是乱码。同样,mysql返回的结果已经被转换成character_set_results代码(与表的编码无关),默认也是utf8,而网页都是按gb2312处理的,所以必然存在数据库读取的字段如title等是乱码,而php其他部分不是乱码的现象。

解(被利刃落下的雪):

安装mysql5.0时要选择utf8字符集(用phpmyadmin创建数据库和字段时不需要选择utf8字符集),php建立连接后发送。

复制代码代码如下:

$link = mysql_connect('localhost ',' root ',' root ');

mysql_query("SET NAMES 'utf8 ' ",$ link);

这时候我们在网页里看到的还是乱码,其实不是。???看网页的源文件,完全正常。用记事本打开php源文件,不要保存为utf8代码,然后刷新网页,就全部完成了。

或者,当然安装的时候还是要安装utf8,用php发送set names 'gb2312 '。同时php文件要保存为记事本默认的ansi,也能正确显示中文。

但是您不能在每次连接时都发送设置名称“utf8”。怎么彻底解决还没找到。

这样,安装mysql时,默认字符集是utf8,这就带来了另一个问题。在我们进入command.exe的mysql控制台后,查询结果再次变得乱码,所以我们可以在查询前输入它。

代码如下:

mysql >设置名称' gbk ';

或者

复制代码代码如下:

mysql >集合名称' GB 2312 ';

相当于告诉mysql客户端使用gb2312字符集,结果是正确的。gb2312是GBK的子集。

adminjs.cn是一个以CSS、JavaScript、Vue、HTML为核心的前端开发技术网站。我们致力于为广大前端开发者提供专业、全面、实用的前端开发知识和技术支持。 在本网站中,您可以学习到最新的前端开发技术,了解前端开发的最新趋势和最佳实践。我们提供丰富的教程和案例,让您可以快速掌握前端开发的核心技术和流程。 Adminjs.cn还提供一系列实用的工具和插件,帮助您更加高效地进行前端开发工作。我们提供的工具和插件都经过精心设计和优化,可以帮助您节省时间和精力,提升开发效率。 在Adminjs.cn中,您可以找到您需要的一切前端开发资源,让您成为一名更加优秀的前端开发者。欢迎您加入我们的大家庭,一起探索前端开发的无限可能!