Java mysql utf-8从一台机器返回乱码
我有使用UTF-8的mysql数据库和使用hibernate用java编写的应用程序。当我在eclipse中运行应用程序时,一切都很好。但在另一台机器上的生产中,从DB返回的值被破坏。 我将这些值打印到日志中(在获得它们之后立即打印),我清楚地看到从DB获得的值在生产过程中被破坏了 对于这两种环境,数据库本身是相同的数据库。这些值存储得很好 你知道这是什么原因吗 更新: 我忘了说它有时会发生。我认为,在50%的情况下,它运行良好 更新2: 以下是hibernate.cfg.xml文件:Java mysql utf-8从一台机器返回乱码,java,mysql,hibernate,utf-8,Java,Mysql,Hibernate,Utf 8,我有使用UTF-8的mysql数据库和使用hibernate用java编写的应用程序。当我在eclipse中运行应用程序时,一切都很好。但在另一台机器上的生产中,从DB返回的值被破坏。 我将这些值打印到日志中(在获得它们之后立即打印),我清楚地看到从DB获得的值在生产过程中被破坏了 对于这两种环境,数据库本身是相同的数据库。这些值存储得很好 你知道这是什么原因吗 更新: 我忘了说它有时会发生。我认为,在50%的情况下,它运行良好 更新2: 以下是hibernate.cfg.xml文件: <
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://myDB:3306/myApp?autoReconnect=true&useUnicode=true&createDatabaseIfNotExist=true&characterEncoding=utf-8</property>
<property name="hibernate.connection.username">username</property>
<property name="hibernate.connection.password">password</property>
<!-- <property name="hibernate.connection.pool_size">10</property> -->
<property name="hibernate.connection.isolation">2</property>
<property name="show_sql">true</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.connection.provider_class">com.zaxxer.hikari.hibernate.HikariConnectionProvider</property>
<property name="hibernate.hikari.minimumIdle">5</property>
<property name="hibernate.hikari.maximumPoolSize">10</property>
<property name="hibernate.hikari.idleTimeout">30000</property>
<mapping class="someclass1"/>
<mapping class="someclass2"/>
<mapping class="someclass3"/>
<mapping class="someclass4"/>
</session-factory>
</hibernate-configuration>
com.mysql.jdbc.Driver
jdbc:mysql://myDB:3306/myApp?autoReconnect=true&useUnicode=true&;createDatabaseIfNotExist=true&;characterEncoding=utf-8
用户名
密码
2.
真的
org.hibernate.dialogue.mysqldialogue
更新
com.zaxxer.hikari.hibernate.HikariConnectionProvider
5.
10
30000
参考URL:
请验证生产环境中的数据源配置是否正确设置了属性-useUniCode和characterEncoding。示例:
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/exodb?relaxAutoCommit=true&amp;autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf8"/>
“我打印了要记录的值(在获得这些值后立即打印),我清楚地看到从DB获得的值在生产过程中已损坏。”-嗯,这可能是您如何记录的问题。在没有看到代码和理想配置的情况下,很难判断出哪里出了问题。我的hibernate.cfg.xml位于我的一个jar中,我猜它正在使用中。请在我的原始问题中查看上面的内容。我还在代码中打印了连接utl,我看到它如hibernate.cfg.xml中所示