java—另一个mysql数据库编码字符在windows和linux上的比较

0qx6xfy6  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(196)

一般的问题是我有两个mysql5db。一个在我正在开发的windows机器上,另一个在远程linux(ubuntu)服务器上。
我在用Spring/冬眠做一个胖jar。
在本地机器和本地mysql数据库上一切正常。我使用jsoup解析一些web页面,并将结果存储在数据库中,数据使用波兰编码存储,例如:“sprzeda”ż 华沙,ż“波托卡,奥利博兹”
在linux服务器上同样是:“sprzeda?华沙,波托卡,奥利博兹
两个数据库具有相同的排序规则:utf8\u unicode\u ci
列是varchar。
在两个数据库上运行sql时:
从information\u schema.tables中选择distinct c.collation\u name,t.table\u name作为t,information\u schema。 collation_character_set_applicability 作为c,其中c.collation_name=t.table_collation和t.table_schema=database();
我得到了相同的结果:排序规则是utf8\u unicode\u ci。
db字符串如下所示:jdbc:mysql://localhost/dbname?autoreconnect=true&useucode=true&createdatabaseifnotexist=true&characterencoding=utf-8
休眠配置如下:

@Bean
public SessionFactory sessionFactory() throws Exception {
    LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
    sessionFactoryBean.setDataSource(dataSource());
    sessionFactoryBean.setPackagesToScan(new String[] { "x.domain" });
    Properties hibernateProperties = new Properties();
    hibernateProperties.put("hibernate.show_sql", false);
    hibernateProperties.put("hibernate.bytecode.use_reflection_optimizer", false);
    hibernateProperties.put("hibernate.check_nullability", false);
    hibernateProperties.put("hibernate.dialect", "org.hibernate.dialect.MySQL5InnoDBDialect");
    hibernateProperties.put("hibernate.search.autoregister_listeners", false);        
    hibernateProperties.put("hibernate.connection.CharSet", "utf8");
    hibernateProperties.put("hibernate.connection.characterEncoding", "utf8");
    hibernateProperties.put("hibernate.connection.useUnicode", true);
    sessionFactoryBean.setHibernateProperties(hibernateProperties);
    sessionFactoryBean.afterPropertiesSet();

    return sessionFactoryBean.getObject();
}

我花了几个小时试图找到一个解决办法,不幸的是没有运气。我已经将排序规则改为utf8\u bin,更改了列排序规则、db strings、hibernate config等等。结果仍然是在linux服务器上得到“?”而不是波兰字符。我希望你能给我一些建议。谢谢你的阅读。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题