Java使用自定义排序规则(as、ci)为utf8显示Mysql数据中的特殊字符错误

Java使用自定义排序规则(as、ci)为utf8显示Mysql数据中的特殊字符错误,java,mysql,utf-8,collation,Java,Mysql,Utf 8,Collation,我在Mysql中为utf8字符设置了自定义排序规则。这个排序规则区分重音,不区分大小写,这是我需要的。但是这些带有重音符号的字符在我的Java应用程序中显示得不好。我要怎么做才能正确显示这些字符? 当我使用Mysql的默认utf8排序规则(如utf8\u general\u ci)时,没有问题,但当我使用自己的排序规则时,有 下面是从mysql获取数据的java代码: Class.forName("com.mysql.jdbc.Driver").newInstance(); St

我在Mysql中为utf8字符设置了自定义排序规则。这个排序规则区分重音,不区分大小写,这是我需要的。但是这些带有重音符号的字符在我的Java应用程序中显示得不好。我要怎么做才能正确显示这些字符? 当我使用Mysql的默认utf8排序规则(如utf8\u general\u ci)时,没有问题,但当我使用自己的排序规则时,有

下面是从mysql获取数据的java代码:

Class.forName("com.mysql.jdbc.Driver").newInstance();
        String connectionUrl = "jdbc:mysql://localhost:3306/mysqlmoviesdb";
        String connectionUser = "";
        String connectionPassword = "";
        conn = DriverManager.getConnection(connectionUrl, connectionUser, connectionPassword);
        stmt = conn.createStatement();
        rs = stmt.executeQuery("SELECT ID, Title FROM mymovies Order By Title");

您的问题可能与数据库中数据的存储方式或显示格式有关,我建议您检查数据库字符格式是否设置为UTF8,以及显示数据的客户端是否也设置为UTF8,顺便说一句,我不确定您的意思是排序失败,因为检索到的信息与数据库中的信息不同(针对特殊字符问题)或者,在整理完成后,它们没有以正确的方式显示在应用程序中

您可以共享您的连接字符串吗?首先显示您的代码:-)显示不好吗?尝试
string=Normalizer.normalize(string,Normalizer.Form.NFC)-可能MySQL将Unicodeŝ拆分为s^,并且在使用的字体中呈现不好。我的代码将它们重新组合成一个Unicode符号。或者最好检查字符串中的chars/int代码点。MySQL只提供两种选择:重音和区分大小写(_-bin)或带重音和忽略大小写(_-ci)。如果您希望大小写折叠,但区分重音,请在提交请求。