在java中通过PreparedStatement向Mysql数据库中插入或修改中文字符时,
出现了“?”的乱码问题。经过查询资料,应该是数据库字符匹配的问题,
经过实践问题解决。共享出来希望能帮到更多的人,不足之处欢迎前来讨论。
环境:Mysql 8.5 64位
在DAO向Mysql数据库中传递数据时,出现?问题,要更改数据库最初连接时的参数。如
private String dbUrl="jdbc:mysql://localhost:3306/db_name?**characterEncoding=utf-8";**
private String dbUserName="root";
private String dbPassword="123456";
private String jdbcName="com.mysql.jdbc.Driver";
public Connection getCon() throws Exception{
Class.forName(jdbcName);
Connection con=DriverManager.getConnection(dbUrl, dbUserName, dbPassword);
return con;
}
在数据库名称后面加一个?characterEncoding=utf-8”;后面跟?characterEncoding=gbk也可以,根据使用的字符集而定。问题就可以解决。
另外,在JAVA 中使用SERVLET无法解析中文字符时,可以使用
request.setCharacterEncoding("utf-8");
指定字符集,问题就可以解决。
还有什么其他情况,欢迎来讨论!