java獲取請求參數,java請求mysql數據傳遞中文參數時獲取不到數據的解決方法

問題描述:最近在用spring boot 框架做項目的時候,從前台傳中文參數請求數據的時候,不能返回具體數據,但是把前台輸出的sql語句復制到數據庫連接軟件測試的時候,又能查詢到具體數據!

經過了排查mybatis的xml中的sql語句寫法問題等后,還是沒找到問題所在。最后再用非中文的參數測試的時候,結果發現能正常查到數據,確定是

java請求mysql數據傳遞中文參數是發生了亂碼

解決方法:在配置數據庫的相關文件中,在配置URL的時候要加上useUnicode=true這個參數

因為我的是在spring boot中的,所以在我的application.yml的配置中是這樣的:

66ae9168284ccc2e9a432cabec6c48f2.png

這里在記錄一下

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配置文件中配置數據庫utl時,要使用&的轉義字符也就是&

例如:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这个问题可以回答。以下是一个简单的Java程序,可以从文件中读取数据并将其批量插入到数据库表中: ```java import java.io.BufferedReader; import java.io.FileReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; public class InsertDataFromTextFile { public static void main(String[] args) { String jdbcUrl = "jdbc:mysql://localhost:3306/mydatabase"; String username = "myusername"; String password = "mypassword"; String filename = "data.txt"; String tableName = "mytable"; try (Connection conn = DriverManager.getConnection(jdbcUrl, username, password); BufferedReader br = new BufferedReader(new FileReader(filename))) { String line; String sql = "INSERT INTO " + tableName + " (col1, col2, col3) VALUES (?, ?, ?)"; PreparedStatement pstmt = conn.prepareStatement(sql); while ((line = br.readLine()) != null) { String[] data = line.split(","); pstmt.setString(1, data[0]); pstmt.setString(2, data[1]); pstmt.setString(3, data[2]); pstmt.addBatch(); } pstmt.executeBatch(); System.out.println("Data inserted successfully."); } catch (Exception e) { e.printStackTrace(); } } } ``` 这个程序假设你已经有一个MySQL数据库,并且已经创建了一个名为"mydatabase"的数据库,以及一个名为"mytable"的表,该表有三个列(col1, col2, col3)。程序从一个名为"data.txt"的文本文件中读取数据,每行数据用逗号分隔,然后将数据批量插入到"mytable"表中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值