2016-07-29 5 views
0

json_encode()으로 배열을 인쇄 할 때 아랍어 사용자 이름이 표시되지 않습니다.이 사용자 이름을 올바르게 표시하려면 어떻게해야합니까? 내가 쿼리 befor을php json_encode()가 아랍어 문자로 null을 표시합니다.

mysql_query("SET NAMES 'utf8'"); 

을 사용하는 경우

$cnx = mysqli_connect("localhost", "root", "pass", "databasename"); 
$data = mysqli_query($cnx, "SELECT userid,username FROM user"); 
$getalluser = array(); 
while ($row = mysqli_fetch_array($data)) 
    $getalluser[] = array($row[ "username" ], 
         "http://localhost/test/image.php?u=" . $row[ "userid" ], 
         $row[ "username" ]); 
echo json_encode($getalluser); 

는 그 결과이 \u00ca\u00c7\u00e3\u00d1

내가 PHP 5.2


순간에이 솔루션을 사용하고 같은 보여줍니다 iconv()를 사용

콘솔에서 사용자 데이터베이스에 변경 6,
$users[] = array(iconv('windows-1256', 'utf-8', ($row[ "username" ])), 
         "http://localhost/386/image.php?u=" . $row[ "userid" ], 
         iconv('windows-1256', 'utf-8', ($row[ "username" ]); 
+0

mysql 대신 mysqli를 사용하면 mysql_query ("SET NAMES 'utf8'");'이 아니라'mysqli_set_charset ($ cnx, 'utf8'); – julp

+0

@julp 감사 형제 결과를'utf'로 변환하기 위해'iconv()'를 사용했고 매우 잘 작동합니다. – user3745594

+0

허, 이해가 안갑니다 : MySQL에 utf8에서 결과를 반환하도록 요청하면 (mysqli_set_charset), UTF-8로 이미 변환해야하는 내용을 UTF-8로 변환하려면 어떻게해야할까요? 귀하의 데이터는 처음에 데이터베이스에 "손상"됩니까? (예 : SET NAMES가 INSERT에 없습니다.) – julp

답변

0

시도해보십시오 VARCHAR에서

ALTER TABLE 'user' MODIFY 'username' VARCHAR(32) CHARACTER SET utf8; 

() 함수는 문자의 사용자 정의 길이를 설정합니다.

당신의 모든의 맨 처음에 PHP : 작동합니다

header('Content-Type: text/html; charset=utf-8'); 

합니다.

+0

형님, 고맙습니다.하지만 데이터베이스에있는 테이블을 편집하거나 변환하고 싶지 않습니다. 솔루션을 원하거나 PHP 코드에서만 편집하십시오. – user3745594

+0

사용자 테이블이 'utf8_general_ci'입니다. – user3745594

+0

문제는 JSON입니다. 대답은 아닙니다. JSON은 아무것도 변경하지 않고 모두 utf8 등으로 파일 인코딩에 의존합니다. – nikomaster

관련 문제