MySQL - 希伯来语charachters成为DB中的问号

时间:2015-05-27 16:33:41

标签: java android mysql json http

我有DB,其所有列都设置为" hebrew_general_ci"。

当我尝试手动将希伯来值插入我的数据库或通过Postman时,我可以看到数据库中的值确实是希伯来语。

但是,当我尝试从我的应用程序插入值(android应用程序 - 用java编码)时,值会成为问号 - ????

我尝试在应用程序本身将我的文本编码为UTF-8,但它没有用。

这是代码,它假设这样做:

private String POST(String url, String jsonParamsAsString) {
        String result = "";
        String fixedUrl = url.replace(" ","%20");
        try {
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost postRequest = new HttpPost(fixedUrl);
            byte  ptext[] = jsonParamsAsString.getBytes();
            jsonParamsAsString = new String(ptext, "UTF-8");
            StringEntity input = new StringEntity(jsonParamsAsString);
            input.setContentType("application/json; charset=utf-8" );
            //input.setContentType("application/json");
            postRequest.setEntity(input);
            HttpResponse response = httpClient.execute(postRequest);
            result = convertInputStreamToString(response.getEntity().getContent());
            /*byte  ptext[] = result.getBytes();
            result = new String(ptext, "UTF-8");*/
        } catch (Exception e) {
            Log.d("InputStream", e.getLocalizedMessage());
        }
        return result;
    }

1 个答案:

答案 0 :(得分:3)

如果您运行的是MySQL&的最新版本,则需要将数据库的编码设置为utf8 / utf8_general_ci或utf8mb4 / utf8mb4_general_ci。需要处理表情符号。 Here是文档。基本上,您不需要将表设置为特定语言的特定字符集。我已经使用了上面的设置,它开箱即可处理阿拉伯语,俄语,中文,英语等,它与语言无关,只是有效。祝你好运。

修改:您还需要确保您的查询连接包含以下两个参数:useUnicode=yescharacterEncoding=UTF-8