【发布时间】:2012-08-11 15:09:10
【问题描述】:
我有一个多语言 java 应用程序,它可以在 MySql 数据库中获取和存储数据。
我将表格排序规则保留为 utf-8-general-ci
对于 JDBC 连接,我使用 useUnicode=true&characterEncoding=UTF-8 参数。
像 ® 这样的字符可以正常显示,但中文字符会乱码。
现在,
关于添加JVM参数-Dfile.encoding=UTF8
显示中文字符,但不显示 ® 等字符。
我应该怎么做才能显示来自不同语言输入的所有字符。
编辑:
输入数据来自 UDP 数据包,由 ByteBuffer 上的 get 方法处理。
还有一个像这样实现的 getString 方法。
public String getString() {
byte[] remainingBytes = new byte[this.byteBuffer.remaining()];
this.byteBuffer.slice().get(remainingBytes);
String dataString = new String(remainingBytes);
int stringEnd = dataString.indexOf(0);
if(stringEnd == -1) {
return null;
} else {
dataString = dataString.substring(0, stringEnd);
this.byteBuffer.position(this.byteBuffer.position() + dataString.getBytes().length + 1);
return dataString;
}
}
【问题讨论】:
-
你想在哪里展示东西?目前还不清楚这个问题是否真的与数据库有关。
-
我在一个 PHP 网页上显示它,从那个 mysql DB 获取数据
-
好的,这是另一个很容易出错的方面。你做了什么来说服自己问题出在 Java 代码而不是 PHP 上?
-
因为在 JDBC 中仅使用 useUnicode=true&characterEncoding=UTF-8 时会显示类似 ® 的字符,但在 JVM 参数中添加 -Dfile.encoding=UTF8 时会停止正确显示。
-
当我复制粘贴中文/数据库中的任何字符时,它会正确显示。所以问题出在 JAVA -> DB path
标签: java mysql jdbc character-encoding