Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:PHP UTF8_Php_Utf 8 - Fatal编程技术网

Android:PHP UTF8

Android:PHP UTF8,php,utf-8,Php,Utf 8,我有一个PHP(5.3)脚本,它从数据库中获取数据,并通过JSON将数据传递给android。UTF-8字符仅适用于Ä、Ü等 但不是俄文和中文字母 桌子 函数“发送消息” ... $answerarray[] = array( "id" => $row['id'], "countdown" => $row['-1'], "answerText" => $row['text'], "answerusername" => $row['fromusername'], "fil

我有一个PHP(5.3)脚本,它从数据库中获取数据,并通过JSON将数据传递给android。UTF-8字符仅适用于Ä、Ü等

但不是俄文和中文字母

桌子

函数“发送消息”

...
$answerarray[] = array( 
"id" => $row['id'],
"countdown" => $row['-1'],
"answerText" => $row['text'],
"answerusername" => $row['fromusername'],
"filename" => $row[' '],
"country" => $row['country']
);

utf8_encode_deep($answerarray);
echo json_encode(array('answer'=>$answerarray));
功能utf8_encode_deep(来自互联网)


要成功传递utf8字符,您需要确保

  • 数据库表和字段
  • 与数据库的连接
  • php文件本身的编码
  • 输出的文件的内容类型标头
  • 都是utf8。 如果在mysql中手动查询结果时得到正确的字符,那么问题很可能出在3或4上


    如果json编码一开始是正确的,它就不会破坏编码。在将mysql中的数据转换为json字符串之前,您可以检查它是否正确(使用PHP中的print\u r)。

    去掉
    utf8\u encode\u deep
    。PHP现在支持utf本身。然后它甚至不识别Ä、Ö等,并返回空值。在传输的哪个点,有效负载会损坏?@Ulrich Eckhardt当我用PhpMyAdmin查询它时,它工作得很好。一旦我的android应用程序收到它,它就会崩溃。我去掉了utf8\u encode\u deep。这是正确的。此外,我忘了将连接设置为UTF-8,我忘了连接!
    ...
    $answerarray[] = array( 
    "id" => $row['id'],
    "countdown" => $row['-1'],
    "answerText" => $row['text'],
    "answerusername" => $row['fromusername'],
    "filename" => $row[' '],
    "country" => $row['country']
    );
    
    utf8_encode_deep($answerarray);
    echo json_encode(array('answer'=>$answerarray));
    
    function utf8_encode_deep(&$input) {
    if (is_string($input)) {
        $input = utf8_encode($input);
    } else if (is_array($input)) {
        foreach ($input as &$value) {
            utf8_encode_deep($value);
        }
    
        unset($value);
    } else if (is_object($input)) {
        $vars = array_keys(get_object_vars($input));
    
        foreach ($vars as $var) {
            utf8_encode_deep($input->$var);
        }
    }
    }