如何将Java String转换为MS访问代码标准

时间:2013-02-21 13:10:43

标签: java jdbc-odbc

我是一名java编码器,在我的项目中,我想将特定字体存储到microsoft access数据库。但在数据库中他们只显示“????”标志。有关详细信息,我使用JTextField获取String,然后插入到MS数据库表中。但在表格字段中,它只显示“???”。有没有像(statement.executeUpdate())这样的方法可以在数据库中显示“Zawgyi-One”字体类型。

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

2 个答案:

答案 0 :(得分:0)

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

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

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("");
}

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

答案 1 :(得分:0)

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

假设确实如此,您可以在jdb-odbc连接定义中查找参数。 你现在所拥有的是,多字节Unicode字符不被识别,并且被写入数据库中的几个ASCII字符。

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

: - )

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

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