我有三个文本字段(ID,名称,地址),它反映了数据库表中的列我试图将阿拉伯字符插入到该表中,但它显示为“?????”
使用JDBC连接到数据库
我的数据库信息。 :MySQL Server 5.5.14社区
服务器字符集:latin1
Db characterset:utf8
客户端字符集:latin1
Conn.characteretet:latin1
我尝试使用以下代码对字符串进行编码:
private String ArEncode(String text){
String txt="";
try {
Charset cset = Charset.forName("utf8");
CharsetEncoder encoder = cset.newEncoder();
CharsetDecoder decoder = cset.newDecoder();
ByteBuffer buffer = encoder.encode(CharBuffer.wrap(text));
txt=buffer.asCharBuffer().toString();
} catch (Exception ex) {
Logger.getLogger(UserView.class.getName()).log(Level.SEVERE, null, ex);
}
return txt;
}
然后将返回的字符串“txt”插入到数据库
中注意:当我尝试从netbeans直接将数值插入数据库时,它会被正确插入并且正确显示阿拉伯字符。
答案 0 :(得分:4)
你为什么要这样做? mysql JDBC驱动程序的工作是在声明的数据库字符集中正确编码字符串。将数据库中的字符集设置为UTF-8,正确设置JDBC选项,只需插入普通的旧字符串。
答案 1 :(得分:0)
如果编码逻辑正常工作,则应该在txt
中返回与text
中完全相同的值,因此不需要它。
并且:将连接字符集设置为utf8 - JDBC将/应该处理其余的...