Я разрабатываю приложение, в котором я получаю данные из веб-сервиса и показываю на мобильном устройстве Android. Но проблема заключается в том, что турецкие данные отображаются неправильно.
Я уже установил utf-8
в PHP. Но все же получаются специальные символы символов, такие как 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; ?>
в<?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(); } } }
И возврат 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>
В коде 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>";
См. htmlspecialchars
Docs .