Java自动生成MySQL数据库连接编码

时间:2010-11-05 21:24:20

标签: java mysql encoding

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

2 个答案:

答案 0 :(得分:0)

如果您使用jsp,请在页面上添加:

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

编辑:我被CRUD表格误导了但是我会离开...

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

character_set_server 变量设置为 utf8 ,如果设置为latin1

答案 1 :(得分: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:这是一款桌面应用......