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 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中,如果使用缺省的字符集,在建库、建表时,默认使用的是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中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默认使用的字符集是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字符集设置—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 中的字符集转换与乱码问题,并提供解决方法。
一、字符集与编码
首先,我们需要了解字符集和编码的概念。字符集是一组字符的集合,而编码则是将字符集中的字符映射到二进制数据的规则。常见的字符集有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导出乱码问题
1、导出数据
2、默认CSV格式
3、乱码
4、解决
⽂件->另存为,会发现编码为UTF-8,正是MySQL表的编码⽅式。我们选择编码⽅式为ANSI,保存类型为所有,覆盖源⽂件
MySQL命令行查询结果中文显示乱码解决方法
数据库编码格式为utf-8,表和字段也都是utf-8,存进去的格式是utf-8
但是用命令行工具查询命令select * from 表名; 查询出来的中文是乱码
原因:MySQL客户端根本就不能以utf-8的形式返回数据解决如下:SET NAMES GB2312; 在命令行执行即可解决。
mysql乱码解决办法(总结版)
本人自己亲自总结的经验分享了:
1.在菜单栏找到database
2.选择database registration info,如下图所示,进行设置:
重新连接数据库,就会发现全部中文正常显示!
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乱码处理总结
(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中文乱码问题
要了解详细信息,请百度。
解决方案:
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>
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使⽤,乱码问题
1.中⽂乱码问题
利⽤ef更新数据到mysql数据库中,中⽂就会变成乱码"",就算把mysql的数据库的编码设置为"utf8"也会变成乱码,从⽹上查询了下,
在数据连接字符串后⾯加上:Character Set=utf8;即可,这样插⼊mysql的中⽂就不会变成乱码了。
2.HTML⽂本乱码问题
后台编辑图⽚、视频、连接等富⽂本时,⼤家也会使⽤ueditor等富⽂本编辑器,但是存储到mysql中就会变成乱码.
只需要修改mysql对应的字段类型为:longtext即可
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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'