2015-02-25 5 views
7

Во-первых, мой этот код является фиктивным кодом, написанным в sql только для понимания цели. так что любезно несут с этим пока, поскольку я изменю его на mysqli позже ..отображение арабских данных из базы данных mysql

У меня есть арабский текст, который нужно сохранить в базе данных, а затем отобразить его в конце пользователя.

Чтобы сохранить его в базе данных я изменил параметры сортировки для utf8_general_ci и использовать следующий код в файле подключения, т.е. config.php

<?php 
$link = mysql_connect('abc','abc','abc') or die('Cannot connect to the DB'); 
mysql_select_db('abc',$link) or die('Cannot select the DB'); 
mysql_set_charset("UTF8", $link); 
mysql_query("set character_set 'utf8'"); 
?> 

с его помощью я был в состоянии хранить данные в арабской форме, но теперь в моем php-файле, который должен отображать данные, я получаю буквенно-цифровые данные (что-то вроде этого: u062du0631u0641u0629n). Пример код моего файла РНР

<?php 
require_once('config.php'); 
$vendorid = $_REQUEST['vendorid']; 

     $select = mysql_query("select * from vendor where id = '".$vendorid."'"); 

$posts = array(); 
    if(mysql_num_rows($select)) { 
     while($post = mysql_fetch_assoc($select)) { 
      $posts[] = $post; 
     } 
     header('Content-type: application/json'); 
     echo stripslashes(json_encode(array('vendor list'=>$posts))); 
    } else { 
    header('Content-type: application/json'); 
     echo stripslashes(json_encode(array('vendor list'=>'No vendor available'))); 
    } 
?> 

ответ

1

года могут использовать этот код для просмотра utf8 характера и строки

mysql_set_charset('utf8',$link); 
+0

Я добавил ссылку ur в свой файл конфигурации, но все равно получаю тот же результат. – lyra

0
  1. Используйте mysqli_ * API вместо mysql_ *. Последнее не рекомендуется.
  2. Изменить вместо $ mysqli_obj-> set_charset ('utf8') вместо SET NAMES.
  3. Я предполагаю, что u062d является «HAH»? У вас нет другого способа набрать арабский язык, чем использовать коды Unicode? В некоторых контекстах Windows позволяет делать Alt + 062D.
  4. Как правило, html-страницы с подходящим в начале позволяют вводить любой символ utf8 (включая арабский).
  5. Я не думаю, что вам нужно stripslashes в контексте, где вы его используете. Или у вас есть дополнительные слэши в базе данных? (Это было бы проблемой.)
  6. Я ничего не вижу в вашем коде, который бы сгенерировал 'u062d'.
  7. Сделайте SELECT HEX (col), col FROM ..., чтобы выбрать строку, содержащую одну из этих строк Unicode; что может дать нам дополнительные подсказки.
+0

u062d - это всего лишь случайная буквенно-цифровая информация, я получаю случайные буквенные числовые данные, где когда-либо есть арабские данные в базе данных. Я сохранил арабские данные в моей базе данных и там он отображается правильно, но не на переднем конце – lyra

+0

«u062du0631u0641u0629» не очень случайный - это представление Unicode для 4 арабских символов. Является ли на лицевой стороне эти 20 символов, если в нем должно быть 4 арабских символа (حرفة)? Если это так, нам нужно (1) выяснить, почему кто-то хранит эти коды, и/или (2) выяснить, как преобразовать его обратно на арабский. В терминах MySQL термин «062d063106410629» должен рассматриваться как шестнадцатеричный символ ucs2, а затем преобразован в utf8 в виде шестнадцатеричного «D8ADD8B1D981D8A9». –

+0

Непросто конвертировать 062D063106410629 в D8ADD8B1D981D8A9. Но гораздо сложнее сначала избавиться от символов «u». Есть ли у вас программисты, свободно владеющие регулярными выражениями? Я думаю, что s/u ([0-9a-fA-F] {4,4})/& # x $ 1/может быть основанием для превращения u062d в & # x062d, что было бы "html-сущностью" для hah, тем самым отображая на экране «правильно». –

1

попробовать это перед выполнением запроса:

Смежные вопросы