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