JDBC连接MySQL中文乱码问题及解决方案.docxVIP

  • 5
  • 0
  • 约2.49千字
  • 约 5页
  • 2021-04-13 发布于天津
  • 举报

JDBC连接MySQL中文乱码问题及解决方案.docx

JDBC 连接 MySQL 中文乱码问题及解决方案 【摘要】 JDBC 加 MySQL 的开发方式深受广大软件 开发者的喜爱,但有时进行数据库编程时会涉及到操作中文 字段,比如通过 sql 语句插入中文字段,有时会出现乱码的 问题。如何解决这些问题呢?本文进行了常见的问题描述和 解决方案。 关键词】 JDBC MySQL 中文乱码 、概述 JDBC 加 MySQL 的开发方式深受广大软件开发者的喜 爱,但是开发中如果遇到涉及到中文时经常会遇到以下几种 情况: 在用 jdbc 向 mysql 数据库进行中文字段的查询时, 数 据库有该记录值但是查询却失败了;或者插入中文字段时出 现了乱码。 究其原因是因为 mymysql 命令行客户端默认使用 的字符集是 latin1 ,我们查询或插入的字符串是 gbk 或别的 编码,由于编码不一致导致的。 、常见问题 1)安装 mysql 过程中如果不设置使用的编码方式, 采 用默认的字符集创建数据库和表,在给表中的字段赋值时。 无法使用中文字段,如果在建表时对该列的字符集类型进行 了设置,比如设为 utf8 ,则可使用中文字段。这是因为服务 器、数据库、表、列均使用的是MySQL 器、数据库、表、列均使用的是 MySQL 数据库默认的编 码――” latin1 ”。 2)在使用 JDBC 技术进行数据的查询时, 如果采用中 文表名进行,例如查询的 sql 语句为 select*from 学生,则报 错,究其原因为MySQL 错,究其原因为 MySQL 对 aql 语句中的“学生”解析失败 了。 3)在使用JDBC 技术进行数据的查询时, 如果采用中 3)在使用 JDBC 技术进行数据的查询时, 如果采用中 文字段的插入时, 插入后通过 mysql 查看该字段变为了乱码。 、解决方案 乱码出现的情况都是由于客户端、服务器端、数据库、 查询结果等的字符集设置有编码不一致导致的。首先了解 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,贝U采用 character-set-client 字符集作为默认的字符集。所以只需要设置 character-set-client 字符集。要处理中文,贝可以将 character-set- server 和 character-set-client 均设置为 GB2312,如果要 同时处理多国语言,贝设置为UTF8 同时处理多国语言,贝设置为 UTF8。 我们可以通过 mysql 命令行查看 mysql 字符集设置情 况: show variables like %char% ; 查看结果: | Variable_name | Value | | character_set_client | gbk | | character_set_connection | gbk | | character_set_database | gbk | | character_set_filesystem | binary | | character_set_results | gbk | | character_set_server | gbk | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql/share/mysql/ charsets/ | 在查询结果中可以看到 mysql 数据库系统中客户端、 数 据库连接、数据库、文件系统、查询结果、服务器、系统的 字符集的设置,文件系统字符集是固定的,系统、服务器的 字符集在安装时确定。 接下来我们来解决这个问题 解决方案一:在进行数据连接的 url 后加上? userUnicode=tr uecharacterEncoding=gbk ,指明使用的编码方案。 例如: String url =jdbc

文档评论(0)

1亿VIP精品文档

相关文档