Java服务器页面-插入MySql时的排序规则?
我正在使用Java服务器页面,在从应用程序插入数据时遇到排序问题。我的插入代码如下所示:Java服务器页面-插入MySql时的排序规则?,java,mysql,jsp,collation,Java,Mysql,Jsp,Collation,我正在使用Java服务器页面,在从应用程序插入数据时遇到排序问题。我的插入代码如下所示: <%@page import="java.sql.*" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <% Class.forName( "com.mysql.jdbc.Driver"); Connection co
<%@page import="java.sql.*" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<% Class.forName( "com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/myapp", "root", "");
Statement st=con.createStatement();
ResultSet rs;
st.executeUpdate("insert into table values (default,1,2,šđžćč)"); %>
在我的数据库中,结果如下所示??(因此,他能看懂2个字母,但不能全部看懂)。如何修复它,使所有字母都在我的数据库中
编辑:
我可以通过phpmyadmin插入带有这些字符的数据,但我不能从.jsp文件插入数据库。这就像我的jsp文件中的charset=utf-8不起作用一样。问号来自:
- 客户端具有有效字符(良好),并且
与客户端的编码一致(良好),但集合名称
- 目标列的
不包含所需字符(错误)字符集
仅处理西欧字符;尝试 将东欧字符或任何亚洲字符放入 它不合适latin1
和latin2
可以处理捷克语,所以它们之间的转换基本上是可以的, 但不是在他们和拉丁语之间cp1250
是utf8mb4
的超集。 将utf8字符放入utf8mb4中是可以的,但反之亦然 在某些情况下会导致“?”的结果utf8
插入内容
- 在表格列上使用
可能在所有情况下都有效utf8mb4
- 否则,为表列选择一些与客户端数据合理匹配的
字符集
?
(在ššššš
)是因为šš
是拉丁文,而其他字符则不是
底线:更改表定义中的
字符集。通过从旧路径添加到我的连接解决了问题
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/myapp", "root", "");
到
表定义没有问题。在phpmyadmin中,我可以将这些类型的字符插入表中,并且可以使用sql查询将它们从表中读取到页面中。在数据库中插入只会忽略这些字符,并插入“?”而不是它们。所以我认为问题出在jsp页面上,不知道如何解决它。我将表定义中的排序规则更改为“utf8mb4”,该表中的列仍然显示“?”。š
和ž
在latin1
中可用,但其他三个字符不可用,因此?
。我相信获得šž???
的唯一方法是(1)utf8字节(好),(2)连接到mysql,指定utf8(好),但是(3)列/表上的字符集拉丁语(坏)。请提供显示创建表
。排序规则数据库的问题不是问题,因为我可以在phpmyAdmin中输入这些值,可以从表中获取此类数据,并使用useUnicode=true&characterEncoding=UTF-8将此类字符输入数据库。我试图使用“超级utfmb4”,但结果仍然是一样的。。。将这些参数添加到连接中后,问题得到了解决。
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/myapp?useUnicode=true&characterEncoding=UTF-8", "root", "");