java程序向mysql添加中文出现问号乱码

本文详细介绍了如何解决Java程序输入中文数据到MySQL数据库时出现乱码的问题,包括设置MyEclipse编码方式、修改MySQL数据库编码、重启MySQL服务器等步骤。

问题描述:

    当在java程序中输入中文时,添加数据到mysql中,所有的文字都变成了问号(?)。如下图:

java程序:

mysql数据库:

解决思路:

    查阅资料:

    1、MySQL的默认编码是Latin1,不支持中文,支持中文的数据库编码格式为gbk和utf8(注:在MySQL中要使用utf8,在java程序中使用utf-8,两者指的都是utf-8)。

    2、MyEclipse的编码方式和MySQL的编码方式不一致也会导致乱码问题。

解决办法:

   设置MyEclipse的编码方式:

    设置MyEclipse的编码方式有多种,包括:全局编码设置,局部编码设置,文件默认编码设置

   本文主要介绍全局编码设置:工具栏中的Window-->Preferences-->MyEclipse-->Files and Editors-->JSP-->右侧的Encoding将其修改为UTF-8格式即可,如图:


  设置MySQL的编码方式:

  1、查看数据库编码方式命令:show variables like 'character%';

  2、修改数据库编码方式:alter database test(数据库名称) character set utf8;

  3、创建数据库时,指定数据库的编码方式:createdatabase test(数据库名称) character set utf8;

  4、执行查看编码方式的命令后,出现如图所示信息。

  从以上信息可知数据库的编码方式为latin1,其中,character_set_client为客户端编码方式;character_set_connection为建立连接使用的编码方式;character_set_database为数据库的编码方式;character_set_results是结果集的编码方式;character_set_server为数据库服务器的编码方式。只要保证以上采用的编码方式一样,就不会出现乱码问题。

  5、修改配置文件my.ini:

  修改[client]下面的语句:default-character-set=utf8


  修改[mysqld]下面的语句:character-set-server=utf8

 

  6、重启MySQL服务器

  开始-->运行-->输入:services.msc,打开“服务”,找到MySQL服务,右键重启即可。

    设置MySQL编码方式就三步:1、用命令修改数据库编码,2、修改配置文件,3、重启服务。

  完成修改后,查看数据库编码方式,如图:

  大功告成!

### Java程序设计中界面乱码解决方案 在Java程序开发过程中,界面出现乱码通常是由字符集不匹配引起的。以下是可能导致乱码的原因及其相应的解决办法: #### 1. 字体原因导致的乱码 如果界面上显示的是方框或其他无法识别的符号,则可能是由于字体未正确加载或缺少对应的语言包所致。可以通过设置合适的字体来解决问题。例如,在Swing组件中可以修改默认字体为支持中文的字体[^1]。 ```java import javax.swing.*; public class FontExample { public static void main(String[] args) { JFrame frame = new JFrame(); JLabel label = new JLabel("你好"); // 设置支持中文的字体 label.setFont(new java.awt.Font("微软雅黑", java.awt.Font.PLAIN, 20)); frame.add(label); frame.setSize(300, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } ``` #### 2. 编码问题导致的乱码 当界面上显示问号时,通常是编码错误造成的。这可能涉及文件保存时的编码、JVM启动参数中的编码以及数据库连接字符串中的编码等问题。具体解决方法如下: - **文件编码**:确保源代码文件是以UTF-8格式保存的。 - **JVM启动参数**:通过指定`-Dfile.encoding=UTF-8`参数让JVM使用统一的字符编码标准运行[^2]。 - **数据库连接串**:对于MySQL等关系型数据库,需确认其服务器端和客户端均采用一致的字符集(推荐使用UTF-8),并将其反映到URL配置项里。例如: ```properties jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8 ``` #### 3. Web环境下的乱码处理 如果是基于Web的应用程序遇到POST请求提交数据后的乱码现象,还需要调整Servlet容器的相关设定。Tomcat为例,可以在server.xml内的Connector标签增加URIEncoding属性设成"UTF-8"[^2]: ```xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> ``` 以上措施能够有效减少因不同环节间存在差异而引发的一系列乱码状况。
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值