关于mysql中文插入 问号??问题的解决方法!

关于mysql中文插入 问号??问题的解决方法!

  1. 数据库安装的时候会让你选择未来创建库的时候用什么默认字符集,当 然这个当初不记得也没有关系

  2. 我们也可以自己修改
    MySql安装目录下面的my.ini(MySQL Server Instance Configuration 文件)。 设置 default-character-set=gbk(注意,有2处[mysql]和[mysqld])

    [mysql]
    
    default-character-set=gbk
    [mysqld]
    
    
    # The TCP/IP Port the MySQL Server will listen on
    
    port=3306
    
    
    
    #Path to installation directory. All paths are usually resolved relative to this.
    
    basedir="D:/Develop/MySQL/MySQL Server 5.0/"
    
    
    #Path to the database root
    
    datadir="D:/Develop/MySQL/MySQL Server 5.0/Data/"
    
    
    # The default character set that will be used when a new schema or table is
    
    
    # created and no character set is defined
    
    default-character-set=gbk
    
    
    # The default storage engine that will be used when create new tables when
    
    default-storage-engine=INNODB

    这里修改为utf8也可以,但一定要注意,如果你是用doc命令窗口插入数据,由于doc命令窗口和系统的字符集保持一致,中文系统是gbk,那么向表中存入数据就会乱码了

  3. 修改以上的信息后重启数据库服务,在计算机,管理,服务中
    这里写图片描述

  4. 之后通过doc打开你的数据库,查看数据库字符集即可查看,下列查看语句
    这里写图片描述
    红色标记的位置是我们主要修改的位置

  5. 你也可以通过下列语句查看你所创建的数据库和表的字符集

    1、查看数据库字符集:
       show create database mydbname;
       更改数据库字符集:
       alter database mydbname default character set utf8;
    2、查看数据库表的字符集:
       show create table mytable;
       更改数据库表的字符集:
       alter table mytable default character set utf8;
    
  6. 上述的方法是解决mysql不能存中文的问题,如果你没有这些操作,那么存入中文总会报异常
    Data truncation: Data too long for column
    但实际上,有些人发现,中文数据是能存入的,但中文部分全部显示???

  7. 关键!下面我们来说明,能存入中文,但是显示???问号的问题
    其实答案很简单,这种情况通常是你已经创建的数据库和表并不是默认字符集
    即使你按照1-5的做法完成了设置,但是你之前使用mysql所创建的数据库和表,根本不是gbk的,而还是更改之前的默认字符集,你可以通过5的语句查询验证是否这样,如果是这样,那么很简单,删了重新创建,那么再次存入的数据就能正常显示了
    这里写图片描述

在IntelliJ IDEA中,如果你的代码运行正常但是数据库插入的数据显示为"?",这通常表示出现了数据绑定或SQL字符串格式的问题。以下是几种可能的原因及解决方法: 1. **未设置正确的数据库连接**: 确保你在代码中配置了正确的数据库驱动、URL、用户名和密码。检查`DataSource`或`JDBC Connection`是否配置正确。 2. **SQL注入**: 使用预编译语句(PreparedStatement)或参数化查询能避免这种问题。如果直接拼接字符串,可能会将变量值当作SQL文本处理,造成数据无法正确插入。 示例: ```java String sql = "INSERT INTO table (column) VALUES (?)"; PreparedStatement pstmt = connection.prepareStatement(sql); pstmt.setString(1, value); // 将value替换为实际数据 pstmt.executeUpdate(); ``` 3. **数据类型转换错误**: 检查传入数据库的数据类型是否与表列匹配。例如,如果你试图插入一个字符串到需要数值类型的字段,可能会显示问号。 4. **空值处理**: 如果你的值为null,某些数据库系统会自动插入NULL,而不是问号。检查你的代码是否忽略了对null值的处理。 5. **日志查看**: 查看应用服务器的错误日志,有时候问题可能是由日志输出导致的误读。 6. **数据库问题**: 如果其他操作也遇到同样的问题,可能是数据库本身的问题,如编码冲突或者权限不足等。确认数据库状态正常并且有相应的写权限。 针对以上情况,一一排查并修正即可。如果问题仍然存在,请提供具体的代码片段以便进一步分析。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值