我正在开发一个应用程序,其中我从Web服务获取数据并在Android移动设备中显示。但问题是在获取土耳其数据时它无法正确显示。
我已经在PHP中设置了utf-8
。但仍然为字符串A?ık ?ğ
获取Açık Öğretim
之类的特殊字符符号。
这是我的PHP代码:
<?php
include("Netbrut_class.php");
header('Content-type: text/xml; charset: utf-8');
$webservice = new Netbrut;
$content='<?xml version="1.0" encoding="utf-8"?><salary_comparision>';
$education = $webservice->select_education();
for($i=0; $i<count($education); $i++){
$string = html_entity_decode($education[$i]['comparision_name'], ENT_QUOTES, "utf-8");
$content.="<education id='".$education[$i]['id']."'>".$string."</education>";
}
$content .='</salary_comparision>';
echo $content;
?>
我的Java代码是/我在这里编写java代码只是为了测试:
public class testing {
static String[] attributes;
public static void main(String[] args)
{
URL url;
try {
url = new URL("http://192.168.1.106/netBrut/webservices/testing.php");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection = (HttpURLConnection) url.openConnection();
java.io.InputStream is = connection.getInputStream();
InputStreamReader reader = new InputStreamReader(is, "utf-8");
StringWriter sw = new StringWriter();
char [] buffer = new char[1024 * 8];
int count ;
while( (count = reader.read(buffer)) != -1){
sw.write(buffer, 0, count);
}
System.out.println(sw.toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
从Web服务返回XML是:
<?xml version="1.0" encoding="utf-8"?>
<salary_comparision>
<education id='128'>A?ık ?ğretim</education>//Check here
<education id='5'>Doktora</education>
<education id='3'>Master</education>
<education id='4'>MBA</education>
<education id='2'>?niversite</education>
</salary_comparision>
答案 0 :(得分:1)
在Php代码中只需更改以下行
$string = html_entity_decode($education[$i]['comparision_name'], ENT_QUOTES, "utf-8");
$content.="<education id='".$education[$i]['id']."'>".$string."</education>";
到
$string = $webservice->unhtmlspecialchars($education[$i]['comparision_name']);
$content.="<education id='".$education[$i]['id']."'>".$string."</education>";