Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.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 utf-8从一台机器返回乱码_Java_Mysql_Hibernate_Utf 8 - Fatal编程技术网

Java mysql utf-8从一台机器返回乱码

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文件: <

我有使用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&amp;useUnicode=true&amp;createDatabaseIfNotExist=true&amp;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;amp;autoReconnect=true&amp;amp;useUnicode=true&amp;amp;characterEncoding=utf8"/>


“我打印了要记录的值(在获得这些值后立即打印),我清楚地看到从DB获得的值在生产过程中已损坏。”-嗯,这可能是您如何记录的问题。在没有看到代码和理想配置的情况下,很难判断出哪里出了问题。我的hibernate.cfg.xml位于我的一个jar中,我猜它正在使用中。请在我的原始问题中查看上面的内容。我还在代码中打印了连接utl,我看到它如hibernate.cfg.xml中所示