【问题标题】:SQL query in android doesn't recognize hebrew letters despite in wamp server it doesandroid 中的 SQL 查询无法识别希伯来字母,尽管它在 wamp 服务器中可以识别
【发布时间】:2016-03-20 20:55:50
【问题描述】:

当我尝试按希伯来语字段查找记录时,它在执行我的查询时不返回任何数据。尽管当我在我的 wampserver 中粘贴相同的查询时,查询返回正确的答案!

我将表格和字段定义为utf8_general_ci,但问题仍然存在。请帮忙。

public ArrayList<String> findPartnersFast(String semester , String course , String city) {
        String currentQuery = "SELECT * FROM fast_reg " + "WHERE course = " + "'" + "מבוא למקרוכלכלה"  +  "'" ;
        ArrayList<String> arrayOfResults = new ArrayList<String>();
        try {
            statement = connection.createStatement();
            res = statement.executeQuery(currentQuery);
            Log.d("DBmanipulation" , currentQuery);
            while(res.next()) {
                Log.d("DBmanipulation" , "in while loop!");
                String temp = res.getString("student_name");
                arrayOfResults.add(temp);
                Log.d("DBmanipulation", "name: " + temp);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (res != null) {
                    res.close();
                }
            } catch (Exception e) {

            }
        }
        return arrayOfResults;
    }

日志:

03-20 20:29:09.400 3593-4082/com.example.uvalerx073037.finalproject_correct D/Register: In BackGround 
03-20 20:29:09.400 3593-4082/com.example.uvalerx073037.finalproject_correct I/System.out: conneting to Database... 
03-20 20:29:09.532 3593-4082/com.example.uvalerx073037.finalproject_correct I/System.out: Connection Successful 
03-20 20:29:09.550 3593-4082/com.example.uvalerx073037.finalproject_correct D/DBmanipulation: SELECT * FROM fast_reg WHERE course = 'מבוא למקרוכלכלה' 
03-20 20:29:09.557 3593-4082/com.example.uvalerx073037.finalproject_correct I/System.out: connection close properly

【问题讨论】:

  • 这是个好问题!我花了好几天才弄明白;);

标签: java android mysql wampserver


【解决方案1】:

您需要确保sql表行和字段编码正确:

  1. db 排序规则必须是 utf8_general_ci。
  2. 表与希伯来语的排序规则必须是 utf8_general_ci
  3. 在与数据库的连接中,您需要使用清除字符集的设置,我知道在 php 中连接设置需要是这样的: ('Content-Type: text/html; charset=utf-8');
  4. 在你的xhtml标签中,在android中,你需要定义这个页面使用utf8:
  5. 在连接脚本中选择数据库后,您需要输入 mysql_query("SET NAMES 'utf8'");

也看看这个答案: MySQL db question marks instead of hebrew characters..?

【讨论】:

  • 除了您在解释中的步骤 3 中对 JDBC 连接的回答之外,我做了: con = DriverManager.getConnection("jdbc:mysql://localhost:3306/myDatabase?useUnicode=true&characterEncoding= UTF-8","user","passwd");
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-12
  • 1970-01-01
  • 2019-06-10
  • 1970-01-01
相关资源
最近更新 更多