php和javaandroid之间使用Json编码的特殊字符


special characters between php and java android using Json encode

作为标题中的站点,我有重音字符编码问题。我在网上找到了几个解决方案,但它不起作用,或者我不知道如何使用。一开始:我在php-myssql库中收集所有数据,并使用json_encode函数将数据返回给应用程序。这就是它崩溃的地方。所有有重音字符的字段都替换为null。数据库要么是一个网站(我不能更改它),要么在windows-1252中编码,直接插入wampPHP为什么我找到了解决方案

$liste_amis = $bdd->query('SELECT * FROM lieux');

            $nombre_amis=0;
            while($myliste=$liste_amis->fetch()){

                foreach($myliste as &$value)
                    {
                     $value = mb_convert_encoding($value, "UTF-8", "Windows-1252");
                    }
                $output[]=array_map('utf8_encode', $myliste );


                 } 
print(json_encode($output));

但它只适用于用wampPHP插入的数据,它看起来更像"discotA¨que"并且在Logcat中像这样"discoth''u00c3''u00a8que"

并且剩菜总是被赋予空

在我的java代码中,我使用BufferedReader

 try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8192);
            StringBuilder sb = new StringBuilder();
            String line = null;
            int i = 0;
            while ((line = reader.readLine()) != null) {
                sb.append(line);
                i++;

帮助

编辑:

最后它工作了,解决方案:

mysql_query ( "'utf8' SET NAMES" );
//--....... 
 while($myliste=$liste_amis->fetch()){
$output[]=array_map('utf8_encode', $myliste);
}
print(json_encode($output,JSON_UNESCAPED_UNICODE));

java:

BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);

储罐。

将代码重写为。。。

foreach($myliste as &$value)
{
    $value = mb_convert_encoding($value, "UTF-8", "Windows-1252");
}
$output[]=array_map('utf8_encode', $myliste);
}
print(json_encode($output,JSON_UNESCAPED_UNICODE));