2010-11-05 25 views
0

我有一个Java项目连接到MySQL数据库。
当我使用executeQuery(查询)在两者之间进行通信时,一切似乎都与编码,罚款,但我有一些自动生成的CRUD表格,当使用某些编码特定字符时会抛出异常。
例如,当我运行
INSERT INTO db (id,name) VALUES (1,'ŠĐŽČĆšđžčć')
来自Java一切正常,但是当我通过持久性实体管理器更新数据库自动生成的代码有时我得到一个异常,有时我得到一些字符替换'?'。请注意,有些而不是所有的字符都被替换。 那么,如何设置自动生成的代码上的编码也能正常工作呢?
TNX!Java自动生成MySQL数据库连接编码

+0

显示你的'persistence.xml' – Bozho 2010-11-05 21:32:23

+0

它在连接段落中... – Andrej 2010-11-05 21:55:39

+0

但它不是一个答案 - 编辑哟你的问题,并将其添加到那里。然后删除答案。 – Bozho 2010-11-05 22:44:50

回答

0

如果你正在使用JSP添加此页面上:

<%@ page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8" %> 

编辑:我是误导与CRUD的形式,但无论如何,我会离开它...

可以看到S,但你不能看到ć和č,对吧? 试试这个:

设置被character_set_server变量UTF8如果它被设置为latin1

0

这里的持久化XML:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> 
    <persistence-unit name="kemoton_dbPU" transaction-type="RESOURCE_LOCAL"> 
    <provider>oracle.toplink.essentials.PersistenceProvider</provider> 
    <class>...</class> 
    <properties> 
     <property name="toplink.jdbc.user" value="root"/> 
     <property name="toplink.jdbc.password" value=""/> 
     <property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/kemoton_db?characterEncoding=UTF-8"/> 
     <property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/> 
    </properties> 
    </persistence-unit> 
</persistence> 

BTW @ TRIX:这是一个桌面应用程序...