在mysql数据库中传入中文字符,并实现正常显示

合集下载

mysql中如何显示中文

mysql中如何显示中文

在C:\Program Files\MySQL\MySQL Server 5.5找到my.ini,记事本打开,并改成然后重启mysql服务就行了。

相关资料:1:Windows平台,因为Windows操作系统默认的是用了gb2312这个字符,而mysql在安装的时候,默认的是客户端和服务器都用了latin1,所以这就导致一个字符集和字符校验不匹配的问题,这个时候只需要找到mysql的配置文件my.ini 找到default-character_set ,把他的参数改成gb2312就可以了,一共有两个这样的参数,一个是对客户的,一个是服务器的,我一般建议是把服务器的设置成国际通用的字符utf8。

2: Linux平台,在Linux平台上安装mysql的时候,给于的自由度是很大的,你可以在安装选项./configure中找到数据库的字符设置(这个还要麻烦你自己看readme安装文件),这个时候最好是把字符设置成gbk,因为这个字符集也是Linux平台默认安装的中文字符集,然后在/etc下找到f文件(这个文件在安装mysql后要自己把他转移到/etc/下,除非你是rpm 安装).需要注意的是Linux里的很多工具都是不支持中文的,哪怕是vi,你可以在startx后执行命令kwrite,来编译文件,这个图形变异软件有一个选项是可以把你所写的东西转换成任意的字符集,很不错。

二)不能插入中文解决办法:向表中插入中文然后有错误。

mysql> insert into users values(88,'中文');ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column 'usern ame' at row 1mysql> insert into users values(88,'中文');ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column 'usern ame' at row 1还要更改users表的username的字符集。

MySQL处理中文乱码问题

MySQL处理中文乱码问题

MySQL处理中文乱码问题浏览次数:9405次 2009年04月06日JavaEye技术网站字号: 大中小分享到:QQ空间新浪微博腾讯微博人人网豆瓣网开心网更多3前些天刚把乱码问题解决了,写出来给大家,也方便以后自己查阅首先:用show variables like “%colla%”;show varables l ike “%char%”;这两条命令查看数据库与服务端的字符集设置如果查看出来都是gbk2312,或gbk,那么就只能支持简体中文,繁体和一些特殊符号是不能插入的,我们只有修改字符集为UTF-8,修改方法如下:用记事本或UitraEdit打开mysql数据库安装目录下的my.ini文件打开,然后Ctrl+F搜索default-character-set,将后面的字符集修改为UTF8,注意要修改两个地方,一个事客户端的,一个是服务端的。

然后保存,重启mysql服务、、进去继续用show variables like “%colla%”;show varables like “%char%”;着两条语句查询一下字符集。

如图:到此就配置完成了。

注意:如果以前建有数据库没有删除的请用show database 数据库名;和show create table 表名;查看一下数据库和表的字符集是否为UTF8 ,因为修改my.ini文件,它不能修改原来数据库的的字符集。

在命令行下面可以用alter database 数据库名c haracter set “字符集”;命令来修改数据库字符集还有一点要注意的是,修改为UTF8以后,在命令行下面中文是乱码的,只输出到页面或控制台是正常的,这个问题我也上网查了一下,貌似命令行下面不支持UTF8,我也不太清楚。

当修改以后,在命令行下面如果要插入中文,可以在插入语句之前执行,set names gbk2312;就可以插入中文了,但是不能插入繁体和一些特殊符号。

访问MySQL数据库时中文乱码问题分析及解决

访问MySQL数据库时中文乱码问题分析及解决

访问MySQL数据库时中文乱码问题分析及解决使用MySQL保存中文数据时,经常会遇到乱码问题。

产生乱码的原因很多,在笔者以为对MySQL的字符集处理已经很有了解的时候,使用C#编程时,竟再一次遇到了乱码。

联想到前几天一位同事在使用JDBC访问MySQL时遇到的中文乱码问题,决定对MySQL中文乱码问题的产生场景进行一次总结。

一、错误读出现象:一个已经存在数据的MySQL数据库,该数据库的数据用系统中其它软件、网页查看均正常,使用MySQLcc之类的客户端查看也正常,可是在新写的网页中总是显示乱码。

分析:其它系统都可以正常查看数据,说明数据本身是没有问题的。

在网页中显示乱码,一定是网页的编码字符集和获取到的数据的编码字符集不一至。

比如数据库的字符集是UTF 8的,而网页的字符集是gb2312的,那么网页就会把UTF8编码的字体串当作gb2312的来处理,结果产生乱码。

解决办法:在连接数据库时,设定连接字符集,使连接字符集和当前网页或客户端程序使用的字符集一致。

可以使用MySQL的Set Names指令设定连接字符集。

假设网页的字体集为gb2312。

在连接MySQL后,在连接上执行如下SQL语句:Set Names ‘gb2312’在以后所有这个连接上的查询,MySQL都会自动把数据库中的数据转换成gb2312编码格式传过来。

mysqli_query($db,"SET NAMES 'gb2312'")二、错误写入现象:一个网页或程序向一个MySQL数据库中写数据,写完后,这个网页或程序自己可以正常读取数据,而从其它客户端或网页中读取数据都是乱码。

分析:其它的正常的客户端出现乱码,说明数据库中的字符编码不对。

写数据的那个网页能正常读取,是因为写和读都用了错误的编码格式,将错就错,反而能读出正确的数据了。

比如数据库中设定的字符集为UTF8,而网页使用gb2312编码执行了插入数据的SQL,那么MySQL就会把这些gb2312的编码当成是UTF8的编码写进数据库。

PythonMySQLdb使用utf-8编码插入中文数据问题

PythonMySQLdb使用utf-8编码插入中文数据问题

PythonMySQLdb使⽤utf-8编码插⼊中⽂数据问题最近帮伙计做了⼀个从⽹页抓取股票信息并把相应信息存⼊MySQL中的程序。

使⽤环境:Python 2.5 for Windows MySQLdb 1.2.2 for Python 2.5 MySQL 4.1.22在写程序中遇到了些怪的故障。

第⼀个问题:插⼊中⽂失败这个是由于字符编码问题引起的。

MySQL安装时我已经设置为utf8编码,表也是使⽤utf8编码建⽴。

程序中只要在开头写好#-*- coding: utf-8 -*-,并在设定连接字符串时候写清使⽤utf8就可以了conn=MySQLdb.connect(host="127.0.0.1",user="webdb",passwd="web123",db="web",charset="utf8")。

设置之后从MySQL中取出的以utf8编码保存的中⽂也不会发⽣乱码。

对中⽂字符串,如:a = "浦发银⾏",在进⾏插⼊操作前做⼀下编码转换a = a.decode("gbk").encode("utf-8")。

然后进⾏插⼊操作就没有任何问题了。

第⼆个问题:能插⼊之后⽆法在MySQL中保存刚才插⼊的数据经过检查数据可以被正确的插⼊,但是连接断开之后不保存在表中。

经过检查发现原来是漏了mit()。

需要在语句执⾏之后提交操作。

源代码如下。

#-*- coding: utf-8 -*-import sys,MySQLdbconn=MySQLdb.connect(host="127.0.0.1",user="webdb",passwd="web123",db="web",charset="utf8") #需要设定⼀下charset为utf-8cursor=conn.cursor() #⽣成连接的指针对象#进⾏字符串编码转换并进⾏插⼊a = "浦发银⾏"a = a.decode("gbk").encode("utf-8") #编码转换为utf-8sql="insert into stocklist (stockno,stockname) values (%s,%s)" #⽣成sql语句param=('600000',a) #⽣成sql语句的参数n = cursor.execute(sql,param) #执⾏sql语句#以上操作等价于n = cursor.execute("insert into stocklist (stockno,stockname) values ('430004','"+ "浦发银⾏".decode("gbk").encode("utf-8") + "')") print nmit() #提交操作结果#进⾏查询操作检查刚刚执⾏的插⼊操作结果n = cursor.execute("select * from stocklist")for row in cursor.fetchall():print row[0] + row[1]cursor.close() #关闭指针conn.close() #关闭连接总结以上所述是⼩编给⼤家介绍的Python MySQLdb 使⽤utf-8 编码插⼊中⽂数据问题,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。

java jdbc 链接mysql插入数据中文显示乱码

java jdbc 链接mysql插入数据中文显示乱码

java jdbc 链接mysql插入数据中文显示乱码1.读取数据正常,插入中文乱码查看链接处制定的字符集,这里使用utf-8[java]view plain copy1.String url = "jdbc:mysql://127.0.0.1:3306/website?useUnicode=true&characterEncoding=utf-8 ";完整代码如下:[java]view plain copy1.public mysqlConnect() {2. String driver = "com.mysql.jdbc.Driver";3.// URL指向要访问的数据库名website4. String url = "jdbc:mysql://127.0.0.1:3306/website?useUnicode=true&characterEncoding=utf-8 ";5.// MySQL配置时的用户名6. String user = "root";7.// Java连接MySQL配置时的密码8. String password = "sanyue";9.try {10.// 加载驱动程序11. Class.forName(driver);12. conn = (Connection) DriverManager.getConnection(url,user, password);13.if (!conn.isClosed())14. System.out.println("Succeeded connecting to the Database!");15.// statement用来执行SQL语句16. statement = (Statement) conn.createStatement();17.18. } catch (Exception e) {19. e.printStackTrace();20. statement = null;21. }22. }2.查看mysql和数据库本身默认是否采用的utf8编码此处使用set character_set_database="utf8";修改后在重启mysql后会不起作用,所以请找到您的mysql的配置文件my.ini或f 在[mysqld]的中添加character_set_server=utf8,注意有些是default-character-set=utf8,重新启动服务器时如果出错可以查看错误日志,最后会给出我在配置的过程中遇到的几个错误[html]view plain copy1.mysql> show variables like "character%";2.+--------------------------+----------------------------+3.| Variable_name | Value |4.+--------------------------+----------------------------+5.| character_set_client | utf8 |6.| character_set_connection | utf8 |7.| character_set_database | utf8 |8.| character_set_filesystem | binary |9.| character_set_results | utf8 |10.| character_set_server | utf8 |11.| character_set_system | utf8 |12.| character_sets_dir | /usr/share/mysql/charsets/ |13.+--------------------------+----------------------------+14.8 rows in set (0.00 sec)3.看页面本身是否是utf8编码。

关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)

关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)

关于Mysql中⽂乱码问题该如何解决(乱码问题完美解决⽅案)最近两天做项⽬总是被乱码问题困扰着,这不刚把mysql中⽂乱码问题解决了,下⾯⼩编把我的解决⽅案分享给⼤家,供⼤家参考,也⽅便以后⾃⼰查阅。

⾸先:⽤show variables like “%colla%”;show varables like “%char%”;这两条命令查看数据库与服务端的字符集设置如果查看出来都是gbk2312,或 gbk,那么就只能⽀持简体中⽂,繁体和⼀些特殊符号是不能插⼊的,我们只有修改字符集为UTF-8,修改⽅法如下:⽤记事本或UitraEdit打开mysql数据库安装⽬录下的my.ini⽂件打开,然后Ctrl+F搜索default-character-set,将后⾯的字符集修改为UTF8,注意要修改两个地⽅,⼀个事客户端的,⼀个是服务端的。

然后保存,重启mysql服务、、进去继续⽤show variables like “%colla%”;show varables like “%char%”;着两条语句查询⼀下字符集。

如图:到此就配置完成了。

注意:如果以前建有数据库没有删除的请⽤ show database 数据库名;和 show create table 表名;查看⼀下数据库和表的字符集是否为UTF8 ,因为修改my.ini⽂件,它不能修改原来数据库的的字符集。

在命令⾏下⾯可以⽤alter database 数据库名 character set “字符集”;命令来修改数据库字符集还有⼀点要注意的是,修改为UTF8以后,在命令⾏下⾯中⽂是乱码的,只输出到页⾯或控制台是正常的,这个问题我也上⽹查了⼀下,貌似命令⾏下⾯不⽀持UTF8,我也不太清楚。

当修改以后,在命令⾏下⾯如果要插⼊中⽂,可以在插⼊语句之前执⾏,set names gbk2312;就可以插⼊中⽂了,但是不能插⼊繁体和⼀些特殊符号。

以上就是这⼏天解决乱码的成果。

Mysql中文乱码问题完美解决方案

Mysql中文乱码问题完美解决方案

转载:Mysql中文乱码的解决方法第一种方法,很精辟的总结:经常更换虚拟主机,而各个服务商的MYSQL版本不同,当导入数据后,总会出现乱码等无法正常显示的问题,查了好多资料,总结出自己的一点技巧:WINDOWS 下导入应该这样使用MYSQL的命令在DOS 命令下进入mysql的bin目录下,输入mysql -uroot -p密码数据库名称<要恢复的数据库, 例如我们要把D盘的一个名称为test.sql的数据库恢复到本地的test2这个数据库,那么就这样: mysql -uroot -p密码test2以前的国外主机用的Mysql是4.x系列的,感觉还比较好,都无论GBK和UTF-8都没有乱码,没想到新的主机的Mysql是5.0版本的,导入数据后,用Php读出来全是问号,乱码一片,记得我以前也曾经有过一次切换出现乱码的经验,原因肯定是Mysql版本之间的差异问题。

只好查资料,发现了一个解决方法,就是在mysql_connect后面加一句SET NAMES UTF8,即可使得UTF8的数据库消除乱码,对于GBK的数据库则使用SET NAMES GBK,代码如下:$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);mysql_query("SET NAMES 'GBK'");数据库字符集为utf-8连接语句用这个mysql_query("SET NAMES 'UTF8'");mysql_query("SET CHARACTER SET UTF8");mysql_query("SET CHARACTER_SET_RESULTS=UTF8'");还有个方法就是,如果你自己的机器的话,可以更改MYSQL字符集,一般在MYSQ4和MYSQL5这两个版本中有效。

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:结果字符集。

character_set_connection:连接字符集。

设置这三个系统参数通过向MySQL发送语句:set names gb2312UTF-8:Unicode Transformation Format-8bit,允许含BOM,但通常不含BOM。

是⽤以解决国际上字符的⼀种多字节编码,它对英⽂使⽤8位(即⼀个字节),中⽂使⽤24为(三个字节)来编码。

mysql数据库连接中文转码问题

mysql数据库连接中文转码问题

mysql数据库连接中文转码问题我们在连接mysql数据库的时候一般都会在url后面添加useUnicode=true&characterEncoding=UTF-8 ,但是问什么要添加呢?添加的作用是:指定字符的编码、解码格式。

例如:mysql数据库用的是gbk编码,而项目数据库用的是utf-8编码。

这时候如果添加了useUnicode=true&characterEncoding=UTF-8 ,那么作用有如下两个方面:1. 存数据时:数据库在存放项目数据的时候会先用UTF-8格式将数据解码成字节码,然后再将解码后的字节码重新使用GBK编码存放到数据库中。

2.取数据时:在从数据库中取数据的时候,数据库会先将数据库中的数据按GBK格式解码成字节码,然后再将解码后的字节码重新按UTF-8格式编码数据,最后再将数据返回给客户端。

注意:在xml配置文件中配置数据库URL时,要使用&的转义字符也就是&例如:HTML中常用的特殊字符:最常用的字符实体(Character Entities)显示结果说明Entity Name Entity Number显示一个空格< 小于< <> 大于> >& &符号& &" 双引号" "其他常用的字符实体(Character Entities)显示结果说明Entity Name Entity Number版权© ©注册商标® ®×乘号× ×÷除号÷ ÷。

MySql处理中文问题

MySql处理中文问题

上述是过滤器的类,下面是过滤器在 WEB—INF 的 web.xml 中的配置
<filter> <filter-name>SetCharacterEncoding</filter-name> <filter-class>filter.CharChange </filter-class> <init-param> <param-name>encoding</param-name> <param-value>/param-value> </init-param> </filter> <filter-mapping> <filter-name>SetCharacterEncoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> filter.CharChange 中的 filter 为类 CharChange 所在的 package 的位置
7、 Servlet 中文乱码问题 在 Servelt 中如果涉及显示的话,必须在 doPost 方法中加上下面的语句: response.setHeader("content-type","text/html;charset=UTF-8"); 如果不涉及显示问题时,其他的交互还有 JSP 与 JSP 之间还有 JSP、Servlet 和数据库进行交互时不需要加上面的内容。 (此时表单的提交方式必须是 post)
5、 post 提交表单终极处理中文乱码(使用过滤器)

mysql 插入中文数据乱码解决方案

mysql 插入中文数据乱码解决方案

mysql 插入中文数据乱码解决方案MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。

对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。

下面将分两部分,分别设置服务器编码和数据库、数据表与连接部分的编码,从而杜绝中文乱码的出现。

一、服务器编码设置服务器编码设置方法有二:一是安装mysql时,其中会有一个步骤选择编码方式,此时选择utf8即可。

如果不选择,默认的编码是latin1;二是在安装玩mysql之后,手动修改其配置文件,如下:(1)修改MySql安装目录下面的my.ini(MySQL Server Instance Configuration 文件),(需要关闭mysql服务),(如果本身没有该文件,自己添加一个亦可)my.ini文件进行如下修改:=================================================================================修改my.ini前显示结果===================================================================================mysql> show variables like 'character%';+----------------------------------------+------------------------------------------------+| Variable_name | Value |+----------------------------------------+------------------------------------------------+| character_set_client | gbk || character_set_connection | gbk || character_set_database | latin1 || character_set_filesystem | binary || character_set_results | gbk || character_set_server | latin1 || character_set_system | utf8 || character_sets_dir | D:\mysql-5.5.10\share\charsets\ |+----------------------------------------+------------------------------------------------+8 rows in set (0.02 sec)mysql> show variables like 'collation%';+-------------------------------+--------------------------------+| Variable_name | Value |+-------------------------------+--------------------------------+| collation_connection | gbk_chinese_ci || collation_database | latin1_swedish_ci || collation_server | latin1_swedish_ci |+-------------------------------+--------------------------------+3 rows in set (0.00 sec)==============================================================================关闭mysql服务,在mysql安装目录下,my.ini文件进行如下修改,没有则直接进行添加============================================================================== [mysqld]#修改服务器端默认字符编码格式为utf8character-set-server=utf8[client]#修改客户端默认字符编码格式为utf8default-character-set=utf8==============================================================================修改后,再次输入命令查看,显示结果如下============================================================================== mysql> show variables like 'character%';+----------------------------------------+------------------------------------------------+| 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 || character_sets_dir | D:\mysql-5.5.10\share\charsets\ |+----------------------------------------+------------------------------------------------+8 rows in set (0.02 sec)mysql> show variables like 'collation%';+-------------------------------+--------------------------------+| Variable_name | Value |+-------------------------------+--------------------------------+| collation_connection | utf8_general_ci || collation_database | utf8_general_ci || collation_server | utf8_general_ci |+-------------------------------+--------------------------------+3 rows in set (0.00 sec)================================================================================ (2) (对于已经创建了的数据库)修改data目录中相应数据库目录下的db.opt配置文件default-character-set=utf8default-collation=utf8_general_ci重启数据库,关闭控制台窗口重新登录数据库即可。

如何解决MySQL中文乱码和字符集问题

如何解决MySQL中文乱码和字符集问题

如何解决MySQL中文乱码和字符集问题MySQL是一种开源的关系型数据库管理系统,被广泛用于各种业务应用和网站开发中。

然而,在处理中文字符时,MySQL往往会遇到乱码和字符集问题,给使用者带来很多麻烦。

本文将探讨如何解决MySQL中文乱码和字符集问题,并提出一些优化建议。

一、了解字符集和字符编码在解决MySQL中文乱码和字符集问题之前,我们首先需要了解一些基本概念,即字符集(Character Set)和字符编码(Character Encoding)。

字符集是一种规范,用于定义字符的集合和字符的规则。

常见的字符集有ASCII、UTF-8、GBK等。

字符编码是字符集在计算机中存储和传输的方式。

常见的字符编码有ASCII、UTF-8、UTF-16、GB2312等。

二、设置数据库、表和字段的字符集和字符编码解决MySQL中文乱码和字符集问题的第一步是正确设置数据库、表和字段的字符集和字符编码。

1. 设置数据库字符集和字符编码在创建数据库时,可以指定数据库的字符集和字符编码。

例如:CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;这样,数据库的字符集就被设置为utf8mb4,字符编码则是utf8mb4_unicode_ci。

确保数据库的字符集和字符编码与应用程序及其它组件保持一致。

2. 设置表的字符集和字符编码在创建表时,也可以指定表的字符集和字符编码。

例如:CREATE TABLE mytable (id INT,name VARCHAR(30)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;这样,表的字符集和字符编码与数据库保持一致。

3. 设置字段的字符集和字符编码在创建字段时,可以指定字段的字符集和字符编码。

例如:CREATE TABLE mytable (id INT,name VARCHAR(30) CHARACTER SET utf8mb4 COLLATEutf8mb4_unicode_ci);这样,字段的字符集和字符编码与表保持一致。

MySQL输入字符串返回汉字拼音首字母的方法

MySQL输入字符串返回汉字拼音首字母的方法

MySQL输入字符串返回汉字拼音首字母的方法原理都是一样的,利用gbk中汉字是按照拼音来维护的这一特性。

但一些极不常用字和多音字可能无法包含在内。

创建一个新表, 注意一下charset为gbk是关键:create table`sys_pyk` (`py` char(1) character set utf8 not null,`hz` char(1) not null default'',primary key(`py`)) engine=innodb default charset=gbk;插入一系列数据:insert into`sys_pyk` values('A', '骜');insert into`sys_pyk` values('B', '簿');insert into`sys_pyk` values('C', '错');insert into`sys_pyk` values('D', '鵽');insert into`sys_pyk` values('E', '樲');insert into`sys_pyk` values('F', '鳆');insert into`sys_pyk` values('G', '腂');insert into`sys_pyk` values('H', '夻');insert into`sys_pyk` values('J', '攈');insert into`sys_pyk` values('K', '穒');insert into`sys_pyk` values('L', '鱳');insert into`sys_pyk` values('M', '旀');insert into`sys_pyk` values('N', '桛');insert into`sys_pyk` values('O', '沤');insert into`sys_pyk` values('P', '曝');insert into`sys_pyk` values('Q', '囕');insert into`sys_pyk` values('R', '鶸');insert into`sys_pyk` values('S', '蜶');insert into`sys_pyk` values('T', '箨');insert into`sys_pyk` values('W', '鹜');insert into`sys_pyk` values('X', '鑂');insert into`sys_pyk` values('Y', '韵');insert into`sys_pyk` values('Z', '咗');创建一个提取首字母的函数:create definer=`root`@`localhost` function`sys_first_letter`(words varchar(255)) returns varchar(255) charset utf8 begin-- 最终结果declare resultfpy varchar(255);-- 传入字符串长度declare wordslength int(11);-- 循环变量declare i int(11);-- 当前循环字符declare fpy char(1);-- 当前循环字符(gbk)declare pc char(1);-- 当前循环字符(gbk)十六进制表示declare cc char(4);set@wordslength = length(words);set@resultfpy = '';set@i = 0;while @i < @wordslength do-- 取字符set@fpy = substring(words, @i, 1);-- 将字符转gbk 便于对比set@pc = convert(@fpy using gbk);-- gbk十六进制表示set@cc = hex(@pc);if @cc >= "8140"and@cc <="fea0"then-- 是汉字就提取beginselect py from sys_pyk where hz >= @pc order by py limit 1 into@fpy;end;else-- 不是汉字就不提取set@fpy = '';end if;set@resultfpy = concat(@resultfpy, @fpy);set@i = @i + 1;end while;return@resultfpy;end。

在mysql数据库中传入中文字符,并实现正常显示

在mysql数据库中传入中文字符,并实现正常显示

在mysql中输入中文应做的正确操作1.在安装mysql后要将C:\Program Files\MySQL\MySQL Server 5.5中的my.ini文件中的两个default-character-set的值设为default-character-set=gbk2.在创建mysql数据库时要进行如下创建GBK: create database test2 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;UTF8: CREATE DATABASE `test2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;数据库中的语名如下CREATE DATABASE `zhuce` /*!40100 DEFAULT CHARACTER SET gbk */;CREATE TABLE `tb_user` (`Id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(45) CHARACTER SET gbk DEFAULT NULL COMMENT '用户名',`password` varchar(45) CHARACTER SET gbk DEFAULT NULL COMMENT '密码',`sex` varchar(45) CHARACTER SET gbk DEFAULT NULL COMMENT '性别',`question` varchar(45) CHARACTER SET gbk DEFAULT NULL COMMENT '密码问题',`answer` varchar(45) CHARACTER SET gbk DEFAULT NULL COMMENT '密码答案',`email` varchar(45) CHARACTER SET gbk DEFAULT NULL COMMENT '邮箱',PRIMARY KEY (`Id`)) ENGINE=InnoDB DEFAULT CHARSET=gbk;2.创建字符编码servletCharacterEncodingFilterpackage admin.jichupeizhi.zifu;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;/*** 字符编码过滤器* @author Li Zhong Wei*/public class CharacterEncodingFilter implements Filter{// 字符编码(初始化参数)protected String encoding = null;// FilterConfig对象protected FilterConfig filterConfig = null;// 初始化方法public void init(FilterConfig filterConfig) throws ServletException {// 对filterConfig赋值this.filterConfig = filterConfig;// 对初始化参数赋值this.encoding = filterConfig.getInitParameter("encoding");}// 过滤器处理方法public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {// 判断字符编码是否有效if (encoding != null) {// 设置request字符编码request.setCharacterEncoding(encoding);// 设置response字符编码response.setContentType("text/html; charset="+encoding);}// 传递给下一过滤器chain.doFilter(request, response);}// 销毁方法public void destroy() {// 释放资源this.encoding = null;this.filterConfig = null;}}3.在web.xm中调用<!-- 声明字符编码过滤器--><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>admin.jichupeizhi.zifu.CharacterEncodingFilter</filter-class><!-- 设置初始化参数--><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><!-- 映射字符编码过滤器--><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><!-- 与所有请求关联--><url-pattern>/*</url-pattern><!-- 设置过滤器对应的请求方式--><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher></filter-mapping>4.在数据库连接中的代码import java.io.IOException;import java.io.PrintWriter;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class RegServlet extends HttpServlet {private static final long serialVersionUID = 1789481329876401944L;// 数据库连接Connectionprivate Connection conn;// 初始化方法public void init() throws ServletException {super.init();try {// 加载驱动Class.forName("com.mysql.jdbc.Driver");// 数据库连接urlString url = "jdbc:mysql://localhost:3306/zhuce?useUnicode=true&characterEncoding=GBK";// 获取数据库连接conn = DriverManager.getConnection(url, "root", "111");} catch (Exception e) {e.printStackTrace();}}// doPost()方法处理注册请求public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 设置request与response的编码response.setContentType("text/html");request.setCharacterEncoding("GBK");response.setCharacterEncoding("GBK");// 获取表单中属性值String username = request.getParameter("username");String password = request.getParameter("password");String sex = request.getParameter("sex");String question = request.getParameter("question");String answer = request.getParameter("answer");String email = request.getParameter("email");String dianhua = request.getParameter("dianhua");String shouji = request.getParameter("shouji");String wangkadizhi = request.getParameter("wangkadizhi");String xueli = request.getParameter("xueli");// 判断数据库中否连接成功if (conn != null) {try {// 插入注册信息的SQL语句(使用?占位符)String sql = "insert into tb_user(username,password,sex,question,answer,email,dianhua,shouji,wangkadizhi,xueli) "+ "values(?,?,?,?,?,?,?,?,?,?)";// 创建PreparedStatement对象PreparedStatement ps = conn.prepareStatement(sql);// 对SQL语句中的参数动态赋值ps.setString(1, username);ps.setString(2, password);ps.setString(3, sex);ps.setString(4, question);ps.setString(5, answer);ps.setString(6, email);ps.setString(7, dianhua);ps.setString(8, shouji);ps.setString(9, wangkadizhi);ps.setString(10, xueli);// 执行更新操作ps.executeUpdate();// 获取PrintWriter对象PrintWriter out = response.getWriter();// 输出注册结果信息out.print("<h1 aling='center'>");out.print(username + "注册成功!");out.print("</h1>");out.flush();out.close();} catch (Exception e) {e.printStackTrace();}} else {// 发送数据库连接错误提示信息response.sendError(500, "数据库连接错误!");}}}5.在mysql-front软件中5中jsp文件中要写入<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>。

insert into 中文字段

insert into 中文字段

当在SQL 中使用中文字段时,需要注意以下几点:
数据库字符集支持:确保您的数据库字符集支持中文,例如UTF-8。

转义字符:在SQL 语句中插入中文字段时,需要使用适当的转义字符,以避免特殊字符或保留字引起的问题。

引号使用:在SQL 语句中引用中文字段时,需要使用双引号将字段名括起来。

下面是一个示例,演示如何在SQL 语句中使用中文字段:
INSERT INTO表名 (中文字段名) VALUES ('中文值
');
请确保将上述示例中的"表名"替换为您实际的表名,"中文字段名"替换为您实际的中文字段名,"中文值"替换为您要插入的实际中文值。

另外,如果您使用的是某些数据库管理工具或编程语言,可能还需要注意特定工具或语言的语法要求。

解决MySQL数据库插入中文数据的问题

解决MySQL数据库插入中文数据的问题

解决MySQL数据库插⼊中⽂数据的问题请认真看完,以下这篇⽂章基本上能够解决⼤家关于MySQL数据库插⼊中⽂的问题了1、⾸先我们查看mysql数据库服务器,客户端,数据库连接,⽂件系统等的字符编码show variables like '%char%';+--------------------------+-------------------------------------+------| Variable_name | Value |......+--------------------------+-------------------------------------+------| character_set_client | utf8 |...... -- 客户端字符集| character_set_connection | utf8 |......| character_set_database | latin1|...... -- 数据库字符集| character_set_filesystem | binary |......| character_set_results | utf8 |......| character_set_server | latin1|...... -- 服务器字符集| character_set_system | utf8 |......| character_sets_dir | D:\MySQL Server 5.0\share\charsets\ |......+--------------------------+-------------------------------------+------默认安装完mysql数据库时,服务器和数据库使⽤的编码是latinn1编码格式。

2、查看数据库的创建语句。

以默认的数据库mysql为例show create database mysql可以发现其的default character set默认字符编码格式是latin1。

Mysql不能录入中文

Mysql不能录入中文

总体上来说,建立mysql数据库时要选定好编码模式utf-8 utf8-bin 然后就能实现中文录入。

在字符界面和gui界面的显示差别。

在字符中是中文,而在gui界面是乱码(在字符中是乱码,而在gui界面是中文)。

括号里的情况的解决办法是。

进入字符界面时,录入这句即可mysql.exe --user=root --password=root --default-character-set=gbk1.例如将所有的编码都设置成utf8,jsp的contentType= "text/html;charset=utf-8 "修改数据库默认编码ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 修改表的编码:ALTER TABLE `category` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 修改表字段的编码ALTER TABLE `test` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL2. 使用mysql命令进入控制台,默认情况下是无法输入中文,并且也无法正常显示数据库中已经有的中文的.解决办法是:在进入mysql控制台时,加上参数.示例如下:mysql.exe --user=root --password=root --default-character-set=gbk如果密码为空,则示例如下:mysql.exe --user=root --password= --default-character-set=gbk如果你的数据库编码不是GBK,你也可以把default-character-set换成其它的.有6个关键点使用字符clinent connection database results server system可以通过在mysql控制台下输入:show variables lilke ‘character_set_%’;查看mysql4.1以后版本都支持多字符集的支持,但是安装默认的字符集竟然是latin1这个瑞典文,所以很多人想安装discuz等论坛为gbk、utf-8等字符集的论坛就出现了一些问题。

MySQL中文乱码

MySQL中文乱码

MySQL中文乱码 .txt 不要放弃自己! -------(妈妈曾经这样对我说,转身出门的一刹那,我泪流满面,却不想让任何人看见!)看到这一句小编也心有感触,想起当初离家前往几千里外的地方的时候,妈妈也说过类似的话,但是身为男儿,必须创出一片天,才能报答父母的养育之恩!!乱码产生原因mysql字符编码是版本 4.1引入的 , 支持多国语言 , 而且一些特性已经超过了其他的数据库系统。

我们可以在 MySQL Command Line Client 下输入如下命令查看mysql 的字符集mysql> SHOW CHARACTER SET;+----------+-----------------------------+---------------------+--------+| Charset| Description| Default collation| Maxlen |+----------+-----------------------------+---------------------+--------+| big5| Big5 Traditional Chinese| big5_chinese_ci| 2|| dec8| DEC West European| dec8_swedish_ci| 1|| cp850 | DOS West European| cp850_general_ci| 1|| hp8| HP West European| hp8_english_ci| 1|| koi8r| KOI8-R Relcom Russian| koi8r_general_ci| 1|| latin1| cp1252 West European| latin1_swedish_ci| 1|| latin2| ISO 8859-2 Central European | latin2_general_ci| 1|| swe7| 7bit Swedish| swe7_swedish_ci| 1|| ascii| US ASCII| ascii_general_ci| 1|| ujis| EUC-JP Japanese| ujis_japanese_ci| 3|| sjis| Shift-JIS Japanese| sjis_japanese_ci | 2|| hebrew| ISO 8859-8 Hebrew| hebrew_general_ci| 1|| tis620| TIS620 Thai| tis620_thai_ci| 1|| euckr| EUC-KR Korean| euckr_korean_ci| 2|| koi8u| KOI8-U Ukrainian| koi8u_general_ci| 1|| gb2312| GB2312 Simplified Chinese | gb2312_chinese_ci| 2|| greek| ISO 8859-7 Greek| greek_general_ci| 1|| cp1250| Windows Central European | cp1250_general_ci| 1|| gbk| GBK Simplified Chinese| gbk_chinese_ci| 2|| latin5| ISO 8859-9 Turkish| latin5_turkish_ci | 1|| armscii8 | ARMSCII-8 Armenian| armscii8_general_ci | 1|| utf8| UTF-8 Unicode| utf8_general_ci| 3|| ucs2| UCS-2 Unicode| ucs2_general_ci| 2|| cp866 | DOS Russian| cp866_general_ci| 1|| keybcs2| DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1|| macce| Mac Central European| macce_general_ci| 1|| macroman | Mac West European| macroman_general_ci | 1|| cp852 | DOS Central European| cp852_general_ci| 1|| latin7| ISO 8859-13 Baltic| latin7_general_ci| 1|| cp1251 | Windows Cyrillic| cp1251_general_ci| 1|| cp1256| Windows Arabic| cp1256_general_ci| 1|| cp1257| Windows Baltic| cp1257_general_ci| 1|| binary| Binary pseudo charset| binary| 1|| geostd8| GEOSTD8 Georgian| geostd8_general_ci| 1|| cp932 | SJIS for Windows Japanese| cp932_japanese_ci| 2|| eucjpms| UJIS for Windows Japanese| eucjpms_japanese_ci | 3|+----------+-----------------------------+---------------------+--------+36 rows in set (0.02 sec)更多 mysql 的字符集知识可以参考论坛的/bbs/viewthread.php?tid=296&extra=page%3D1或者 mysql 官方的/doc/refman/5.1/zh/charset.htmlMySQL 4.1的字符集支持 (Character Set Support)有两个方面:字符集 (Character set)和排序方式 (Collation)。

让MySQL支持中文

让MySQL支持中文

让MySQL⽀持中⽂这两天在学习webpy,把webpy的⼀个blog例⼦扒下来学习⼀下,默认创建的table当存⼊中⽂的时候是乱码,研究了⼀下这个问题。

1,创建table的时候就使⽤utf8编码举个例⼦:1create table entries2 (2 id int auto_increment,3 title text,4 content text,5 posted_on datetime,6primary key (id)7 ) character set= utf8;在每次创建表的时候都在最后加上 character set = utf8就可以很好的⽀持中⽂。

2,修改已经有的table的编码当使⽤默认编码创建了⼀个table的时候,是不能⽀持中⽂的,这时候使⽤如下语句对table_name进⾏修改:alter table table_name convert to character set utf8;此后再往这个table插⼊中⽂的时候,就可以正常存储和读取了,但不知道为什么之前的乱码还是不能纠正,只能新插⼊的数据没有问题。

[注意]我google了⼀下,有些地⽅说这个命令也⾏,但是我测试以后并不⾏alter table table_name charset=utf8; #这个语句并没有让table_name⽀持中⽂修改table编码前:修改为utf8后并插⼊⼀⾏数据:可以看到已⽀持中⽂,但之前的3⾏还是没有改变。

3,修改table中⼀个column的编码这个我⽬前还没发现需要在实际中使⽤到,但是测试了很多次,语句如下:alter table entries modify title mediumtext character set utf8;其中entries是我的table名,title是我要修改的column字段,mediumtext是title的类型。

即使是修改table某个字段的编码,也没有做到让之前的乱码变成中⽂。

mysql 汉字首字母 函数

mysql 汉字首字母 函数

mysql 汉字首字母函数MySQL 汉字首字母函数是一种在MySQL 数据库中使用的函数,用于提取汉字字符串中每个汉字的首字母。

这个函数可以帮助我们进行数据分析、排序和检索等操作,提高数据处理效率。

下面是对MySQL 汉字首字母函数的详细介绍。

一、MySQL 汉字首字母函数的定义MySQL 汉字首字母函数是一个用户自定义函数,可以根据汉字的Unicode 编码值计算出每个汉字的首字母。

二、MySQL 汉字首字母函数的使用方法使用 MySQL 汉字首字母函数非常简单,只需在 SQL 查询语句中调用该函数,并将需要提取首字母的汉字作为参数传入即可。

例如,我们有一个名为"students"的表,其中有一个字段为"student_name",存储了学生的姓名。

我们可以使用MySQL 汉字首字母函数来提取学生姓名的首字母,并按照首字母进行排序。

```SELECT student_name, first_letter(student_name) AS first_letter FROM studentsORDER BY first_letter;```上述 SQL 查询语句中,"first_letter" 函数用于提取"student_name"字段中每个学生姓名的首字母,并将其作为"first_letter"列返回。

然后,我们使用"ORDER BY"子句按照首字母进行排序。

三、MySQL 汉字首字母函数的实现原理MySQL 汉字首字母函数的实现原理是通过将汉字转换为Unicode 编码值,并根据编码值计算出汉字的首字母。

具体实现过程如下:1. 首先,将汉字转换为Unicode 编码值。

MySQL 中提供了内置函数"UNICODE",可以将汉字转换为对应的 Unicode 编码值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//传递给下一过滤器
chain.doFilter(request, response);
}
//销毁方法
public void destroy() {
//释放资源
this.encoding = null;
this.filterConfig = null;
}
}
3.在web.xm中调用
<!--声明字符编码过滤器-->
out.print(username + "注册成功!");
out.print("</h1>");
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
} else {
//发送数据库连接错误提示信息
response.sendError(500, "数据库连接错误!");
String question = request.getParameter("question");
String answer = request.getParameter("answer");
String email = request.getParameter("email");
String dianhua = request.getParameter("dianhua");
+ "values(?,?,?,?,?,?,?,?,?,?)";
//创建PreparedStatement对象
PreparedStatement ps = conn.prepareStatement(sql);
//对SQL语句中的参数动态赋值
ps.setString(1, username);
ps.setString(2, password);
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>admin.jichupeizhi.zifu.CharacterEncodingFilter</filter-class>
<!--设置初始化参数-->
<init-param>
}
}
}
5.在mysql-front软件中
5中jsp文件中要写入
<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
*字符编码过滤器
//获取数据库连接
conn = DriverManager.getConnection(url, "root", "111");
} catch (Exception e) {
e.printStackTrace();
}
}
// doPost()方法处理注册请求
public void doPost(HttpServletRequest request, HttpServletResponse response)
String shouji = request.getParameter("shouji");
String wangkadizhi = request.getParameter("wangkadizhi");
String xueli = request.getParameter("xueli");
//判断数据库中否连接成功
`password` varchar(45) CHARACTER SET gbk DEFAULT NULL COMMENT '密码',
`sex` varchar(45) CHARACTER SET gbk DEFAULT NULL COMMENT '性别',
`question` varchar(45) CHARACTER SET gbk DEFAULT NULL COMMENT '密码问题',
<!--与所有请求关联-->
<url-pattern>/*</url-pattern>
<!--设置过滤器对应的请求方式-->
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
4.在数据库连接中的代码
private static final long serialVersionUID = 1789481329876401944L;
//数据库连接Connection
private Connection conn;
//初始化方法
public void init() throws ServletException {
if (conn != null) {
try {
//插入注册信息的SQL语句(使用?占位符)
String sql = "insert into tb_user(username,password,sex,question,answer,email,dianhua,shouji,wangkadizhi,xueli) "
throws ServletException, IOException {
//设置request与response的编码
response.setContentType("text/html");
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
super.init();
try {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//数据库连接url
String url = "jdbc:mysql://localhost:3306/zhuce?useUnicode=true&characterEncoding=GBK";
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<!--映射字符编码过滤器-->
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
* @author Li Zhong Wei
*/
public class CharacterEncodingFilter implements Filter{
//字符编码(初始化参数)
protected String encoding = null;
// FilterConfig对象
protected FilterConfig filterConfig = null;
//获取表单中属性值
String username = request.getParameter("username");
String password = request.getParameter("password");
String sex = request.getParameter("sex");
在mysql中输入中文应做的正确操作
1.在安装mysql后要将C:\Program Files\MySQL\MySQL Server 5.5中的my.ini文件中的两个
default-character-set的值设为default-character-set=gbk
2.在创建mysql数据库时要进行如下创建
}
//过滤器处理方法
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//判断字符码是否有效
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import javax.servlet.ServletException;
相关文档
最新文档