我有三个文本字段(ID,名称,地址),它们反映数据库表中的列,我正在尝试向该表中插入阿拉伯字符,但它显示为“ ?????”

iam使用JDBC连接到数据库
我的数据库信息。 :MySQL Server 5.5.14社区
服务器字符集:latin1
DB字符集:utf8
客户特征集:latin1
康涅狄格州字符集: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直接将值插入DB时,它已正确插入并且阿拉伯字符正确显示。

最佳答案

你为什么要这样做? mysql JDBC驱动程序的工作是在声明的数据库字符集中正确编码字符串。将数据库中的字符集设置为UTF-8,正确设置JDBC选项,然后仅插入普通的旧String。

关于java - 使用Java(SE)将阿拉伯字符插入MySQL DB,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7087168/

10-09 07:22
查看更多