Я не задавал этот вопрос, прежде чем иметь дело с большинством ответов, которые я прочитал об этой проблеме:
У меня есть таблица mysql с CHARACTER SET utf8 COLLATE utf8_unicode_ci, сначала я использовал utf8_general_ci, затем изменил ее ...
когда я получаю английский символ, я получаю список предложений правильно, но когда я получаю арабский символ, я получаю список предложений, но без арабских символов, что является проблемой кодирования, и я прочитал, что jquery уже использует юникод?
код для подключения к mysql и получения поля:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page language="java" import="java.sql.*" %>
<% response.setContentType("text/html;charset=UTF-8");%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String Mystr=request.getParameter("queryString");
String result =null;
try{
String password="xxxxxxx";
String username="root";
String connectionURL = "jdbc:mysql://localhost:3306/myDB?useUnicode=yes&characterEncoding=UTF-8";
/*and if i didn't give it ( useUnicode=yes&characterEncoding=UTF-8";) i get the same result*/
Connection con = null;
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(connectionURL,username,password);
String sql = "SELECT arabic_char FROM charset WHERE english_char LIKE '"
+Mystr+"%' LIMIT 5";
Statement stm = con.createStatement();
//stm.executeQuery("SET NAMES 'UTF8'");
//stm.executeQuery("SET CHARACTER SET 'UTF8'");
stm.executeQuery(sql);
ResultSet rs= stm.getResultSet();
while (rs.next ()){
result= new String( rs.getBytes("arabic_char"), "UTF-8");
out.println("<li onclick='fill("+result+");'>"
+rs.getString("arabic_char")+"</i>");
}
}
catch(Exception e){
out.println("The problem is ;"+e);
}
%>
</body>
</html>