使用JAVA将希伯来语写入mySql
我有一个小型Java方法,可以将短消息插入MySQL数据库。 该表的默认排序规则为utf8\U unicode\U ci,java代码为:使用JAVA将希伯来语写入mySql,java,mysql,hebrew,Java,Mysql,Hebrew,我有一个小型Java方法,可以将短消息插入MySQL数据库。 该表的默认排序规则为utf8\U unicode\U ci,java代码为: private void insertMessageToDataBase(String lRoom, String lChatusername, String lMessage) { try { Connection con = DriverManager.getConnection("jdbc
private void insertMessageToDataBase(String lRoom, String lChatusername,
String lMessage) {
try {
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/embeddedChat?" +
"user=site_access&password=XXXXXXX");
addMessageToDataBase = con.prepareStatement("INSERT INTO `" + lRoom + "` (username, message, action)" +
" VALUES (?,?,'message');");
addMessageToDataBase.setString(1, lChatusername);
addMessageToDataBase.setString(2, lMessage);
addMessageToDataBase.executeUpdate();
}
catch (SQLException e) {
e.printStackTrace();
}
}
问题是,当lMessage是希伯来语时,结果是一个字符串'???'
顺便说一句:
我不知道它是否有帮助,但也有一个PHP脚本,有时会写入数据库中的另一个类似表,并且工作正常。在代码中设置UTF-8。看这个,
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/embeddedChat?useUnicode=true&characterEncoding=utf8");
在代码中设置UTF-8。看这个,
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/embeddedChat?useUnicode=true&characterEncoding=utf8");
谢谢Marc B帮我找出问题所在。对于任何可能遇到类似问题的未来开发人员来说,这只是一个总结 因此,从Marc的评论(上面关于我的问题)我明白我需要检查链接。我不知道怎么做,但我做了一个简短的谷歌搜索,发现了这个页面: 实际上,我所需要做的就是在连接字符串中添加以下行:&useUnicode=true&characterEncoding=UTF-8 这就是我的工作代码现在的样子:
private void insertMessageToDataBase(String lRoom, String lChatusername,
String lMessage) {
try {
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/embeddedChat?" +
"user=site_access&password=XXXXXXXX&useUnicode=true&characterEncoding=UTF-8");
addMessageToDataBase = con.prepareStatement("INSERT INTO `" + lRoom + "` (username, message, action)" +
" VALUES (?,?,'message');");
addMessageToDataBase.setString(1, lChatusername);
addMessageToDataBase.setString(2, lMessage);
addMessageToDataBase.executeUpdate();
}
catch (SQLException e) {
e.printStackTrace();
}
这当然是一团糟,需要一些清理,但这是一个正常工作的代码
谢谢Marc B谢谢Marc B帮我找出问题所在。对于任何可能遇到类似问题的未来开发人员来说,这只是一个总结 因此,从Marc的评论(上面关于我的问题)我明白我需要检查链接。我不知道怎么做,但我做了一个简短的谷歌搜索,发现了这个页面: 实际上,我所需要做的就是在连接字符串中添加以下行:&useUnicode=true&characterEncoding=UTF-8 这就是我的工作代码现在的样子:
private void insertMessageToDataBase(String lRoom, String lChatusername,
String lMessage) {
try {
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/embeddedChat?" +
"user=site_access&password=XXXXXXXX&useUnicode=true&characterEncoding=UTF-8");
addMessageToDataBase = con.prepareStatement("INSERT INTO `" + lRoom + "` (username, message, action)" +
" VALUES (?,?,'message');");
addMessageToDataBase.setString(1, lChatusername);
addMessageToDataBase.setString(2, lMessage);
addMessageToDataBase.executeUpdate();
}
catch (SQLException e) {
e.printStackTrace();
}
这当然是一团糟,需要一些清理,但这是一个正常工作的代码
谢谢Marc B确保您的表格设置为接受希伯来语(utf-8可能是最安全/最简单的选择),然后确保您的整个管道也设置为utf-8:脚本、输入系统、数据库链接(即使表格是utf,链接也可能不是)。@MarcB链接是什么意思?这是jdbc连接器吗?输入系统是。我知道这一点,因为它还将字符串转发给其他接收它的方法。唯一的脚本就是我上面贴的那个?你能更具体地描述一下链接部分吗?我不太明白。感谢确保您的表设置为接受希伯来语(utf-8可能是最安全/最简单的选择),然后确保您的整个管道也设置为utf-8:脚本、输入系统、数据库链接(即使表是utf,链接也可能不是)。@MarcB链接是什么意思?这是jdbc连接器吗?输入系统是。我知道这一点,因为它还将字符串转发给其他接收它的方法。唯一的脚本就是我上面贴的那个?你能更具体地描述一下链接部分吗?我不太明白。谢谢