Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java服务器页面-插入MySql时的排序规则?_Java_Mysql_Jsp_Collation - Fatal编程技术网

Java服务器页面-插入MySql时的排序规则?

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

我正在使用Java服务器页面,在从应用程序插入数据时遇到排序问题。我的插入代码如下所示:

<%@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
    的超集。 将utf8字符放入utf8mb4中是可以的,但反之亦然 在某些情况下会导致“?”的结果
无法从表中恢复转换为“?”的字符

如何修复未来的
插入内容

  • 在表格列上使用
    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", "");