非英语语言问题来自数据库

时间:2018-01-24 15:52:30

标签: php android json api

我想将数据从PHP发送到Android手机。对于API调用,我正在使用“REST”

在我的PHP中,我的所有角色都是非英语语言(泰米尔语)。所以我使用utf-8在数据库中插入非英语(泰米尔语)内容。

所有字符都插入数据库,我将数据作为json发送到Android。但是我在Android开发方面的问题,同时获取json文件,他们得到的所有字符都像问号(???????)。

我是这个领域的新手,我不知道如何解决这个错误。

这是我使用的PHP脚本:

<?php 
    require_once 'DbConnect.php';

    mysql_query('SET character_set_results=utf8');
    mysql_query('SET names=utf8');
    mysql_query('SET character_set_client=utf8');
    mysql_query('SET character_set_connection=utf8');
    mysql_query('SET collation_connection=utf8_general_ci');    

    $response = array();


    if(isset($_GET['apicall'])){

        switch($_GET['apicall']){


            case 'question':

                // i am get lesson and chapter name as request from application side ,i will match lesson and chapter and send question 
                $lesson  = $_POST['lesson'];
                $chapter = $_POST['chapter'];

                if(!isset($lesson) || !isset($chapter)){
                    $response['error'] = true; 
                $response['message'] = 'key and values is empty (or) wrong';
                http_response_code(404); 
                    }



                if(isTheseParametersAvailable(array('lesson','chapter'))){
                    //getting values 
                 $lesson = $_POST['lesson'];
                 $chapter = $_POST['chapter']; 

                    //creating the query 


                 $result1 = mysqli_query($conn, $query1);

                  $query = "SELECT que_desc,true_ans FROM question WHERE lesson = '".$lesson."' AND chapter = '".$chapter."' ";

                    $result = mysqli_query($conn, $query);
                   // $user =array();
                    $i=1;

                    while($row = mysqli_fetch_assoc($result))
                    {
                        $question = $row['que_desc'];
                        $true_ans = $row['true_ans'];
                        $response['question'][$i] = $question;
                        $response['ans'][$i] = $true_ans;

                        $i++;

                    }


                         mysqli_set_charset($link, 'utf8');


                         header('Content-Type: application/json');
                        echo json_encode($response , JSON_FORCE_OBJECT);
                        exit;


                }
            break; 



                default: 
                $response['error'] = true; 
                $response['message'] = 'Invalid Operation Called';
                http_response_code(404);

            }

    }else{
        //if it is not api call 
        //pushing appropriate values to response array 
        $response['error'] = true; 
        $response['message'] = 'Invalid API Call';
            http_response_code(404);
    }

    //displaying the response in json structure 
    header('Content-Type: application/json');
    echo json_encode($response);

    //function validating all the paramters are available
    //we will pass the required parameters to this function 
    function isTheseParametersAvailable($params){

        //traversing through all the parameters 
        foreach($params as $param){
            //if the paramter is not available
            if(!isset($_POST[$param])){
                //return false 
                return false; 
            }
        }
        //return true if every param is available 
        return true; 
    }

    if($_SERVER['REQUEST_METHOD'] ==  "GET"){
        $response['method_type'] = "wrong";
        $response['status'] = 0;
        http_response_code(404);

    header('Content-Type: application/json');
    echo json_encode($response);

    }


    ?>

This is my DB response on Android side 任何人请帮我解决这个错误。在此先感谢

1 个答案:

答案 0 :(得分:0)

当我试图谷歌解决上述问题时, 如果它是一个完整的php页面,每个人都告诉使用下面的代码

    mysql_query('SET character_set_results=utf8');
    mysql_query('SET names=utf8');
    mysql_query('SET character_set_client=utf8');
    mysql_query('SET character_set_connection=utf8');
    mysql_query('SET collation_connection=utf8_general_ci'); 

如果是html页面使用

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

当你使用php和html时,你必须实现mysql_query()函数代码和上面的元标记

完成上述所有操作后,我在工作几个小时后没有找到任何解决方案, 使其在localhost(xammp)中工作 1.go到xammp仪表板单击mysql配置文件 2.文件名“my.ini”将打开粘贴下面的代码

[mysqld]
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake

它在本地主机上工作

使它在SERVER中工作: 在BIGROCK SERVER中,出于安全原因,他们阻止了一些文件,要求他们释放文件。然后尝试上面的代码。

因为在bluehost Server上面的代码对我有用。 泰米尔语(非英语)内容以json格式显示,我将json发送给Andriod,

并且在Bigrock服务器中不起作用。 希望这个人可以帮助别人。