mysql乱码处理

合集下载

mysql数据库乱码问题

mysql数据库乱码问题

数据库读出乱码解决

一、分析常见数据库问题

修改MYSQL数据库,数据表,字段的编码(解决JSP乱码)

要解决JSP乱码,首先就要了解JSP乱码的原因

1.架设服务器安装MYSQL时的会让你选择一种编码,如果这种编码与你的网页不一致,可能就会造成JSP页面乱码

2.在PHPMYADMIN或mysql-front等系统创建数据库时会让你选择一种编码,如果这种编码与你的网页不一致,也有可能造成JSP页面乱码

3.创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成JSP页面乱码

4.创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成JSP 页面乱码

5.用户提交JSP页面的编码与显示数据的JSP页面编码不一致,就肯定会造成JSP页面乱码.

如用户输入资料的JSP页面是big5码,显示用户输入的JSP页面却是gb2312,这种100%会造成JSP页面乱码

6.字符集不正确

要注意:

1.平时你在某些网站看到的文字可能有几种编码,如你看到一个繁体字,它有可能是big5编码,也有可能是utf-8编码的,更有可能是gb码的,没错,也就是说有简体编码的繁体字,也有繁体编码的简体字,一定要了解这一点.

如果你是做一个简体编码的网页,编码定为GB2312,如果有香港和台湾地区的访客提交繁体的信息,就可能会造成乱码,解决方法就是(1)将网站编码设为utf-8,这样可以兼容世界上所有字符,(2)如果网站已经运作了好久,已有很多旧数据,不能再更改简体中文的设定,那么建议将页面的编码设为GBK,

mysql中文乱码解决方法集锦

mysql中文乱码解决方法集锦

mysql中⽂乱码解决⽅法集锦

第⼀个⽅法:

MySQL 4.1 中⽂乱码的问题

最近要将 MySQL 4.0 升级到 MySQL 4.1 ,发现了中⽂乱码的问题,希望以下见解对⼤家有⽤。

1. MySQL 4.1 在⽂字上有很⼤改进,它有了 Character Set 与 Collation 的慨念。

2. 在 MySQL 4.0 ,⼀般的程式都会将⽂字以拉丁⽂ ( latin) 来储存,就算我们输⼊中⽂字,结果仍是放在以拉丁⽂设置的⽂字栏⾥头,这对 MySQL 4.0 与以 MySQL 4.0 为基楚的程式来说,并不会有问题。

3. 可是 MySQL

4.1 的系统编码是预设⽤ UTF-8 的,当要 restore MySQL 4.0 的 backup 档到 MySQL 4.1 时,乱码就出现了。原因在于 MySQL 4.1 将 latin 码转换过来,⽽后转换是并不完全完美的,这导致了出现少量⽂字出现乱码现象。

解决PHP存取MySQL 4.1乱码问题

QUOTE:

从MySQL 4.1开始引⼊的多语⾔⽀持确实很棒,⽽且⼀些特性已经超过了其他的数据库系统。不过我在测试过程中发现使⽤适⽤于MySQL 4.1之前的PHP语句操作MySQL数据库会造成乱码,即使是设置过了表字符集也是如此。我读了⼀下新的MySQL 在线⼿册中第⼗章 "Character Set Support"后终于找到了解决⽅法并测试通过。

MySQL 4.1的字符集⽀持(Character Set Support)有两个⽅⾯:字符集(Character set)和排序⽅式(Collation)。对于字符集的⽀持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。

MySQL中文字符乱码解决

MySQL中文字符乱码解决

以下的文章主要介绍的是解决MySQL中文乱码的好用方案大汇总,我们大家都知道在使用MySQL数据库时,在插入中文字符的实际操作过程中,有时会出现一些乱码,例如,中文全被用?代替。

出现这种情况的原因,多是字符集不匹配造成的。

在MySQL中,如果使用缺省的字符集,在建库、建表时,默认使用的是latin1字符集,为ISO 8859-1西欧字符集。

插入中文字符时,与之不匹配,就会出现乱码。

本人使用的是MySQL 5.0版,并用C#操作MYSQL数据库,当插入中文字符时,发现显示的是MySQL中文乱码。

初步估计是字符集没有配对。查找后,发现MSYQL默认使用的是latin1,因此将数据库的配置文件中的字符设置改为utf8,并在C#中将中文字符,转为utf8,插入后,仍为乱码。

MySQL也支持gb2312,又将MySQL的字符设置改为gb2312,C#中使用Default,重起MySQL后,操作仍然无效。

后想起,虽然将MySQL的字符集设置为gb2312或utf8,但已经建立的数据库和表,仍采用的是默认的字符集,也即仍为当初的西欧字符集,最好,只得忍痛将数据库删除,重新以gb2312字符集建立数据库和表。

再用C#插入中文字符后,一切OK。

再安装好MySQL后,可以手工或使用配置工具,将my.ini文件中的默认字符集改为gb2312,再重新建库和表时,不用再在语句中指定字符集,其默认设置也即为gb2312,可以正常显示中文字符集。

1.建立数据库是一般的语句:

1.create database dbname;

mysql中Incorrectstringvalue乱码问题解决方案

mysql中Incorrectstringvalue乱码问题解决方案

mysql中Incorrectstringvalue乱码问题解决⽅案

mysql中Incorrect string value乱码问题解决⽅案

你是否遇到过类似以下错误?

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x9C' for column 'content' at row 1.

产⽣这种异常的原因在于,mysql中的utf8编码最多会⽤3个字节存储⼀个字符,如果⼀个字符的utf8

编码占⽤4个字节(最常见的就是ios中的emoji表情字符),那么在写⼊数据库时就会报错。

mysql从5.5.3版本开始,才⽀持4字节的utf8编码,编码名称为utf8mb4(mb4的意思是max bytes 4),这种编码⽅式最多⽤4个字节存储⼀个字符。

要想证明这个问题,可以执⾏以下sql:

select * from

information_schema.CHARACTER_SETS

where CHARACTER_SET_NAME like 'utf8%'

结果如图:

因此,要解决上述异常的发⽣,需要使⽤utf8mb4编码。

解决数据库编码后,还需要解决客户端Connection连接对象使⽤的编码问题。

调⽤创建的Connection对象执⾏以下sql:

conn.createStatement().execute("SET names 'utf8mb4'");

如果项⽬中使⽤了DataSource数据源,只需要对数据源进⾏相关配置即可,这⾥以apache的DBCP数据源为例讲解,在spring框架下配置如下:

MySQL中文乱码问题的解决方法

MySQL中文乱码问题的解决方法

MySQL中文乱码问题的解决方法

在使用MySQL数据库过程中,经常会遇到中文乱码的问题。这是由于

MySQL默认使用的字符集是Latin1,而大部分中文系统使用的是UTF-8字符集所致。本文将介绍在MySQL中解决中文乱码问题的几种方法。

一、修改MySQL配置文件

MySQL配置文件(f)是MySQL服务器的设置文件,通过修改该文件可

以改变MySQL的默认字符集。在Linux系统中,该文件通常位于/etc/mysql/f

或者/etc/f。在Windows系统中,该文件通常位于MySQL安装目录下的

my.ini文件。

步骤如下:

1. 找到f或my.ini文件并打开。

2. 在[mysqld]部分添加或修改以下内容:

```

[mysqld]

character-set-server=utf8

collation-server=utf8_general_ci

```

3. 保存文件并重启MySQL服务。

二、修改数据库、数据表、字段字符集

如果修改MySQL配置文件没有解决中文乱码问题,可以尝试直接修改数据库、数据表、字段字符集。

1. 修改数据库字符集

可以使用ALTER DATABASE语句修改数据库的字符集。例如:

```

ALTER DATABASE database_name CHARACTER SET utf8 COLLATE

utf8_general_ci;

```

2. 修改数据表字符集

可以使用ALTER TABLE语句修改数据表的字符集。例如:

```

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

MySQL数据库修改字符集为utf8mb4

MySQL数据库修改字符集为utf8mb4

MySQL数据库修改字符集为utf8mb4

MySQL字符集设置—MySQL数据库乱码问题

需要修改my.ini( f)

[client]

default-character-set=utf8mb4

[mysqld]

character-set-client-handshake = false

character_set_server = utf8mb4

collation_server = utf8mb4_bin

init_connect='set names utf8mb4'

[mysqldump]

character_set_client=utf8mb4

[mysql]

default-character-set=utf8mb4

查看是否修改成功的⽅法:

Mysql执⾏:

show variables like 'version';

show variables like '%character%';

show variables like 'collation%';

结果如下图

⼤家观察看,charater_set_system还是utf8,show variables 看下,但是它应是个只读变量。这个是系统的字符集,修改不了。所以,这个值不可配置,是硬编码的,和OS是紧密在⼀起的,不需要关注。

查看库的字符集

语法:show database status from 库名 like 表名;

mysql> show create database shiyan\G*************************** 1. row ***************************

数据库中乱码问题解决方案

数据库中乱码问题解决方案

数据库中乱码问题解决方案

1. 介绍

在数据库中,乱码问题是一个常见的挑战。当数据被存储、处理或显示时出现乱码,会给用户带来困扰,并可能导致数据不正确地被处理或显示。本文将探讨数据库中乱码问题的原因,提供解决方案以避免或解决这些问题。

2. 乱码问题的原因

乱码问题可能出现在数据库的各个环节,例如数据存储、传输、处理和显示等。以下是一些常见的乱码问题的原因:

2.1 字符集不匹配

数据库使用不同的字符集来存储和处理数据。如果数据的字符集与数据库或应用程序的字符集不匹配,就会导致数据乱码问题。

2.2 编码转换错误

在数据传输或处理过程中,可能会进行字符编码的转换。如果转换过程中存在错误,就会导致数据乱码问题。

2.3 特殊字符处理不当

一些字符具有特殊的含义或用途,如果在处理这些字符时不加以考虑,就会导致数据乱码问题。例如,特殊字符在SQL查询中使用时可能引起问题。

3. 解决方案

为了解决数据库中的乱码问题,我们可以采取以下一些措施:

3.1 使用统一的字符集

确保数据库、应用程序和客户端使用相同的字符集,并将所有数据存储在统一的字符集中。这样可以避免字符集不匹配导致的乱码问题。

3.2 确保正确的编码转换

在进行字符编码转换时,需要确保使用正确的转换算法和目标字符集。可以使用一些常见的编码库或工具来进行转换,例如Iconv。

3.3 转义特殊字符

在处理包含特殊字符的数据时,需要进行适当的转义处理。例如,在执行SQL查询时,可以使用参数化查询或转义字符来避免特殊字符引起的问题。

3.4 设置正确的字符集和校对规则

在创建数据库和表时,需要明确指定正确的字符集和校对规则。这样可以确保数据被正确地存储和处理,从而避免乱码问题的出现。

MySQL中的字符集转换与乱码问题解决方法

MySQL中的字符集转换与乱码问题解决方法

MySQL中的字符集转换与乱码问题解决方法

在使用MySQL数据库时,我们经常会遇到字符集转换和乱码的问题。正确地处理字符集转换和乱码是确保数据库存储和检索数据的关键。本文将探讨MySQL 中的字符集转换与乱码问题,并提供解决方法。

一、字符集与编码

首先,我们需要了解字符集和编码的概念。字符集是一组字符的集合,而编码则是将字符集中的字符映射到二进制数据的规则。常见的字符集有ASCII、Unicode和UTF-8等,而编码方式有UTF-8、GBK、Latin1等。

在MySQL中,字符集用来定义存储和处理文本数据的规则,而编码则是实际使用的二进制编码。如果字符集和编码不一致,就会导致数据存储和检索时出现乱码问题。

二、MySQL中的字符集设置

在MySQL中,字符集设置是通过修改服务器、数据库、表和列的字符集属性来实现的。

1. 服务器字符集设置

在MySQL配置文件(f)中,可以设置服务器的默认字符集和排序规则。通过编辑f文件,找到[mysqld]节点,在其下方添加如下内容:```shell

[mysqld]

...

character_set_server=utf8mb4

collation_server=utf8mb4_unicode_ci

...

```

这样,服务器的默认字符集就被设置为utf8mb4,并且排序规则为

utf8mb4_unicode_ci。

2. 数据库字符集设置

在MySQL中,每个数据库都有一个特定的字符集和排序规则。可以通过以下命令创建一个指定字符集的数据库:

```sql

CREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATE

解决MySQLWorkbench导出乱码问题

解决MySQLWorkbench导出乱码问题

解决MySQLWorkbench导出乱码问题

1、导出数据

2、默认CSV格式

3、乱码

4、解决

⽂件->另存为,会发现编码为UTF-8,正是MySQL表的编码⽅式。我们选择编码⽅式为ANSI,保存类型为所有,覆盖源⽂件

MySQL命令行查询结果中文显示乱码解决方法

MySQL命令行查询结果中文显示乱码解决方法

数据库编码格式为utf-8,表和字段也都是utf-8,存进去的格式是utf-8

但是用命令行工具查询命令select * from 表名; 查询出来的中文是乱码

原因:MySQL客户端根本就不能以utf-8的形式返回数据解决如下:SET NAMES GB2312; 在命令行执行即可解决。

mysql乱码解决办法(总结版)

mysql乱码解决办法(总结版)

本人自己亲自总结的经验分享了:

1.在菜单栏找到database

2.选择database registration info,如下图所示,进行设置:

重新连接数据库,就会发现全部中文正常显示!

MySQL字符集GBK、GB2312、UTF8区别解决MYSQL中文乱码问题

MySQL字符集GBK、GB2312、UTF8区别解决MYSQL中文乱码问题

MySQL字符集GBK、GB2312、UTF8区别解决MYSQL中

⽂乱码问题

character-set-server/default-character-set:服务器字符集,默认情况下所采⽤的。

character-set-database:数据库字符集。

character-set-table:数据库表字符集。

优先级依次增加。所以⼀般情况下只需要设置character-set-server,⽽在创建数据库和表时不特别指定字符集,这样统⼀采⽤character-set-server字符集。

character-set-client:客户端的字符集。客户端默认字符集。当客户端向服务器发送请求时,请求以该字符集进⾏编码。character-set-results:结果字符集。服务器向客户端返回结果或者信息时,结果以该字符集进⾏编码。

在客户端,如果没有定义character-set-results,则采⽤character-set-client字符集作为默认的字符集。所以只需要设置character-set-client字符集。

要处理中⽂,则可以将character-set-server和character-set-client均设置为GB2312,如果要同时处理多国语⾔,则设置为UTF8。

解决乱码的⽅法是,在执⾏SQL语句之前,将MySQL以下三个系统参数设置为与服务器字符集character-set-server相同的字符集。

character_set_client:客户端的字符集。

character_set_results:结果字符集。

mysql乱码处理总结

mysql乱码处理总结

(5)在dos命令上要设置

set names gbk

好了,经过检查上面四个方面的设置,应该OK 了!不会出现诸如

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column等问题.

Mysql中文乱码解决

原来常常在群里看到mysql的乱码问题,但是由于本人一直在用oracle和sql server所以没多在乎,昨天用了用mysql结果就遇到了传说中的乱码…..。现在我们来讲讲mysql的乱码问题。首先你进入的你mysql

用show variables查看

这里可以查看到你的字符集,character_set_server是服务器编码。现在我们默认的是latin1要改变服务器的编码必须重新启动服务器,我们先用mysqladmin –uroot shutdown关闭服务器,然后mysqld –C GBK启动服务器–C 是character_set_server的一个简写(可以也可以写成mysqld

–character_set_server gbk).这样修改以后我们再进入mysql查看就会显示:

这样我们就把服务器和数据库的编码改为了GBK。

现在我们就可以插入中文字符串了,但是为什么有时间还是会显示

Exception in thread "main" com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'name' at row 1

MySQL5.6中文乱码问题

MySQL5.6中文乱码问题

MySQL5.6中文乱码问题

要了解详细信息,请百度。

解决方案:

1进入MySQL服务

第一个横线:我的安装路径

第二个横线:进去MySQl服务命令

第三个横线:叫你输入密码,(空密码直接回车)

2.1查看自己的字符集:(下图是正常的,即utf8字符集比较好)

第一个横线:查询命令,分号不要忘了

第二个横线:

第三个横线:只要二三正常就行,

不正常的表现之一是,二三横线处的值是binary

2.2查看另一个属性

3如果不是上面显示的那么很可能就会出问题了

1、复制my-default.ini,重命名为

my.ini

2、打开my.ini

插入左边文字,保存

重启MySQL服务,就行啦,你可以再次安装上面步骤,再次查看字符集

Mysql 乱码的解决

Mysql 乱码的解决

Mysql 乱码的解决

Mysql 乱码的解决

首先在命令行下进入mysql编辑模式输入

mysql>

show variables like ‘char%’; 查看数据库字符集设置

client、connection、result 和命令行客户端相关(windows 下命令行客户端必须要设置gbk )

database server system 和服务器相关字符集(system字符集不可修改)

* 实际开发中建议大家将database 和server 字符集设置为utf8

修改完database server system 和服务器相关字符集后需要重新启动mysql才能生效

在服务里重启就可以,还可以,在命令行:停止命令:net stop mysql

启动命令:net start mysql

mysql核心配置文件my.ini 如果linux f

[mysql] 主要配置命令行客户端参数default-character-set=gbk ---- 影响client、connection、result

[mysqld] 配置服务器参数character-set-server=utf8 ----- 影响database server

备注:如是win7系统的话,因为权限问题不让修改,你可以把文件拷贝出来,修改完在放回去,(主要是是mysql安装在C盘会出现这样的问题)

如果服务器server 字符集已经设置utf8 建立数据库数据表默认utf8 ----- 插入数据一定没有乱码

如果服务器没有设置server字符集,默认latin1 , 建立数据库指定字符集utf-8 建表指定字符集utf-8 (有乱码)

EF(EntityFramework)与mysql使用,乱码问题

EF(EntityFramework)与mysql使用,乱码问题

EF(EntityFramework)与mysql使⽤,乱码问题

1.中⽂乱码问题

利⽤ef更新数据到mysql数据库中,中⽂就会变成乱码"",就算把mysql的数据库的编码设置为"utf8"也会变成乱码,从⽹上查询了下,

在数据连接字符串后⾯加上:Character Set=utf8;即可,这样插⼊mysql的中⽂就不会变成乱码了。

2.HTML⽂本乱码问题

后台编辑图⽚、视频、连接等富⽂本时,⼤家也会使⽤ueditor等富⽂本编辑器,但是存储到mysql中就会变成乱码.

只需要修改mysql对应的字段类型为:longtext即可

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用MS SQL和oracle9 太吃内存,有点大,全给卸载了.

安装了mysql占内存小,方便使用!

version:mysql-essential-5.1.36

在MySQL Command Line Client显示中文一切正常;

在eclipse中新工程,连接到mysql,读取一个表显示:

代码:

package com.mch.mysql;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class Mysql1 {

public static void main(String[] args) {

String url ="jdbc:mysql://localhost/test";

String user="root";

String password="******";

try {

Class.forName("org.gjt.mm.mysql.Driver").newInstance();

Connection conn= DriverManager.getConnection(url,user,password);

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("select * from pet");

while(rs.next()){

System.out.print("name:" + rs.getString(1));

System.out.print("\t所有者:" + rs.getString(2));

System.out.print("\tbirth:" + rs.getString("birth"));

System.out.println();

}

rs.close();

stmt.close();

conn.close();

} catch (InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

显示乱码?号.

name:?í?í所有者:?????? birth:2007-08-21 name:???? 所有者:?????? birth:2007-06-12 name:?? 所有者:?????? birth:2007-08-21 name:°??? 所有者:???? birth:1999-03-30 name:Puffball 所有者:Diane birth:1999-03-30 在网上查了下,很多人都有这个问题,大部分人说修改my.ini文件,

//原文件

[client]

port=3306

[mysql]

default-character-set=latin1

[mysqld]

port=3306

default-character-set=latin1

我把:default-character-set=utf-8[两处,大小写都试过]

mysql不能启动.

再改成default-character-set=gb2312

可以正常启动,

但在MySQL Command Line Client显示乱码,

eclipse输出也是码乱.

查了下mysql支持字符集,得到default-character-set=utf8

要这样设置,中间没有杠[-],

查看mysql使用的编码:

引用:

mysql> show variables like 'character\_set\_%';

+--------------------------+--------+

| Variable_name | Value |

+--------------------------+--------+

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | utf8 |

| character_set_filesystem | binary |

| character_set_results | utf8 |

| character_set_server | utf8 |

| character_set_system | utf8 |

+--------------------------+--------+

7 rows in set (0.00 sec)

mysql>

插入数据:

引用:

mysql> insert into event values("猪猪",'2009-02-21',"发烧","打针就好了!");

ERROR 1366 (HY000): Incorrect string value: '\xD6\xED\xD6\xED' for column 'name'

相关文档
最新文档