2013-11-27 3 views
2

Я пытаюсь получить данные из таблицы, чья сортировка - «utf8_general_ci», а столбец под названием «имя_приложения» имеет строку, подобную: Plants vs. Zombies ™ 2, 포코 팡 для Kakao, 네이버 - Naver, μTorrent® - Torrent App. Когда я пытался запросить таблицу, как показано ниже:Кодировка символов Юникода для вывода MySQL

<?php 

    $con = mysql_connect('localhost', 'root', 'root') or die('Error connecting to server'); 

    mysql_select_db('googleappanalysis', $con); 

    if(isset($_POST['appType'])) 
    { 
    $appType = $_POST['appType']; 
    $month = $_POST['month']; 
    $year = $_POST['year']; 
    } 


    $monthYear = $month.$year; 

    mysql_query("SET NAMES utf8") 

    if($appType == "Apps with IA"){ 
    $sql="SELECT app_name FROM MonthlyAppState WHERE is86 = 1 AND is86 IS NOT NULL AND monthYear = '".$monthYear."'"; 

    $result=mysql_query($sql); 
    }elseif($appType == "Apps with no IA"){ 
    $sql="SELECT app_name FROM MonthlyAppState WHERE is86 = 0 AND is86 IS NOT NULL AND monthYear = '".$monthYear."'"; 
    $result=mysql_query($sql); 
    } 


    $table = array(); 
    $table['cols'] = array(
array('label' => $appType, 'type' => 'string') 
); 


$rows = array(); 
$appendingString = ""; 
while($r = mysql_fetch_assoc($result)){ 

    $temp = array(); 
$temp[] = array('v' => (string)$r['app_name']); 
$rows[] = array('c' => $temp); 
    $appendingString = $appendingString."/".$r['app_name']; 
} 

$myFile = "logfile.txt"; 
$fh = fopen($myFile, 'w') or die("can't open file"); 
fwrite($fh, $appendingString); 
fclose($fh); 

$table['rows'] = $rows; 

// encode the table as JSON 
$jsonTable = json_encode($table); 

    // set up header; first two prevent IE from caching queries 
header('Cache-Control: no-cache, must-revalidate'); 
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Content-type: application/json'); 

echo $jsonTable; 
?> 

jsontable кидает нулевые значения, а для файла «logfile.txt'the Юникода символов преобразуется в„???“ как видно here

+1

Вы действительно должны избегать использования MySQL и вместо того, чтобы использовать что-то вроде MySQLi или PDO. Это делает защиту от SQL-инъекции тривиальной, тогда как обычный класс mysql бремя дезинфекции ваших запросов всегда зависит от вас, а не от ваших технологий. – echochamber

+0

Каков набор символов (не сортировка) столбца, который вы выбираете? – zerkms

+0

его utf8 для app_name –

ответ

3

Использование

mysql_set_charset('utf8', $con); 

сразу после mysql_connect установить свой набор символов клиента.

Ссылки:

+0

Вы отстаиваете использование устаревшей функции? – Phil

+0

@Phil: предполагается, что это может быть 10 Мб кода. Я не вижу, как переписывать все это лучше, чем добавление ** одной строки **. Особенно, если OP не намерен обновлять свой php в ближайшем будущем – zerkms

+0

У него также есть запрос SET NAMES utf8 – Phil

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