0

我是一名 java 编码员,在我的项目中,我想将特定字体存储到 microsoft access 数据库中。但在数据库中,他们只显示“??????” 符号。具体来说,我是使用 JTextField 来获取字符串,然后插入到 MS 数据库表中。但在表格字段中,它只显示“???”。是否有任何方法(statement.executeUpdate())可以在数据库中显示“Zawgyi-One”字体类型。

提示,我从我的文本字段中获取字符串并插入到 ms 访问中,但它只显示“????”。有什么方法可以在java中将Unicode字符串更改为ASCII?

4

2 回答 2

0

自从我上次使用 ms-access 以来已经有一段时间了。首先,我不太确定 ms-access 一开始就支持 unicode。

假设确实如此,您可能会在 jdb-odbc 连接定义中查找参数。您现在所拥有的是,多字节 Unicode 字符无法被识别为多个 ​​ASCII 字符写入数据库。

除了这个错误之外,您还会遇到任意长度的问题,因为对于每个非 ascii unicode 字符,当这种事情发生时,您的字符串将比预期的要长。我曾经咬过一张名为“带有变音符号的名称的数据库写入失败”的故障单

:-)

要检查一下,您可以尝试通过 ms-access GUI 将其中一个(缅甸语?)字符写入表中,然后通过 JDBC-ODBC 读取表。

如果您实际上可以将字符存储在 ms-access 中,那么下一步就是调整 JDBC-ODBC 连接,使您最终在 Java 端使用这些字符。

于 2013-02-21T14:04:45.460 回答
0

这不是字体的问题。这是java正在存储一个Unicode字符串(UTF-16)并且MS Access认为它应该是ASCII并且Unicode值是2个字节,不匹配任何东西。

您需要按照以下方式编写一个小实用程序:

public static String cleanString(String s) {
    String temp = Normalizer.normalize(s, Normalizer.Form.NFD);
    Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+");
    return pattern.matcher(temp).replaceAll("");
}

在将输入存储到数据库之前调用它。

于 2013-02-21T13:14:00.393 回答