2013-02-21 58 views
0

我是一名java编码人员,在我的项目中,我想将特定字体存储到Microsoft Access数据库。但在数据库中他们只是显示“????”标志。有关详细信息,我使用JTextField获取字符串,然后插入到MS数据库表中。但在表格字段中,它只显示“???”。是否有像(statement.executeUpdate())这样的方法可以在数据库中显示“Zawgyi-One”字体类型。如何将Java String转换为MS访问代码标准

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

+2

一个字符串是一个字符串。它没有任何字体。您可能会看到问号,因为您保存的不是MS Access使用的编码所支持的Unicode字符,也可能是因为您用来查看数据库中的值的工具不使用可以显示这些字符的喜好。 – 2013-02-21 13:13:55

回答

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

调用存储在数据库中对您输入之前。

+0

因此,我必须如何在ms访问中显示正确的数据。提示,我从我的文本字段中获取String并插入到ms访问中,但它只显示“????”。有没有任何方法可以在java中将Unicode字符串更改为ASCII? – user2095528 2013-02-21 13:20:31

0

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

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

除了这个错误,你会遇到任意长度的问题,因为对于每个非ASCII字符的字符串,当这种事情发生时,你的字符串会比预期的更长。 有一次,我一下就被称为故障单我的牙齿“数据库写入失败与变音符名”

:-)

要检查的事情了,你可以尝试写的一个(缅甸?)字符成表通过ms-access GUI,然后通过JDBC-ODBC读表。

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