数组转换为UTF-8? PHP JSON [英] Convert arrays into UTF-8 ? PHP JSON
问题描述
我已经PHP与数据库中的数据生成多维数组,但我有像字符C C DJ表演Z和当我尝试输出的JSON他只是返回null,我做了一些阅读有关这一点,这说,JSON只能使用UTF-8的工作。所以,我怎么可以转换这些阵列在UTF-8?但我仍然需要在阵列和?
这是我的脚本code
$ sql_main = mysql_connect(DB_HOST,DB_UNM,DB_PSW);
($ sql_main)? mysql_select_db(DB_NM):mysql_error(); $ APP_URL_ACCESS = $ _GET ['app_access_key']; $ sql_app =的mysql_query(SELECT * FROM app_sys WHERE APP_OW_C ='$ APP_URL_ACCESS')或死亡(mysql_error()); 如果(mysql_num_rows($ sql_app)== 1){ 而($行= mysql_fetch_array($ sql_app)){
$ APP_UA_ID = $行['APP_UA_ID'];
$ APP_NM = $行['APP_NM'];
$ APP_H_DMN = $行['APP_H_DMN'];
$ APP_H = $行['APP_H'];
$ APP_H_DB_UNM = $行['APP_H_DB_UNM'];
$ APP_DB_NM = $行['APP_DB_NM'];
$ APP_H_DB_PSW = $行['APP_H_DB_PSW'];
$ APP_H_DB_SRV = $行['APP_H_DB_SRV'];
$ APP_ACTIVE = $行['APP_ACTIVE'];
$ APP_OW_C = $行['APP_OW_C'];
}
$ ROW_APP [] =数组(
APP_UA_ID'=> $ APP_UA_ID,
APP_PERMISSION'=> $ APP_ACTIVE,
APP_KEY'=> $ APP_OW_C);
$ APP_ARRAY [''] = $ ROW_APP; ($ APP_ACTIVE =='1')? $ sql_connect_app = mysql_connect($ APP_H_DB_SRV,$ APP_H_DB_UNM,$ APP_H_DB_PSW)及&放大器; mysql_select_db($ APP_DB_NM):$ _MSG =应用程序不活跃; $ sql_news =的mysql_query(SELECT * FROM新闻ORDER BY ID DESC LIMIT 10)或死亡(mysql_error());
而($行= mysql_fetch_array($ sql_news,MYSQL_ASSOC)){
// $ display_json ['数据'] =阵列(
//'ID'=> $行['身份证'],
//'标题'=> $行['标题'],
//'故事'=> $行['故事'],
//'IMG'=> $行['IMG'],
//'作家'=> $行[作者]
//'日期时间'=> $行['日期时间'],
//'shorten_story'=> SUBSTR($行['故事'],0,150)。 '...'); * / $ ROW_APP_DATA [] = $行;
//}$ sql_news =的mysql_query(SELECT * FROM实际ORDER BY ID DESC LIMIT 10)或死亡(mysql_error());
而($行= mysql_fetch_array($ sql_news,MYSQL_ASSOC)){
/ * $ display_json ['数据'] =阵列(
'ID'=> $行['身份证'],
'标题'=> $行['标题'],
'故事'=> $行['故事'],
'IMG'=> $行['IMG'],
作者= GT; $行[作者]
'日期时间'=> $行['日期时间'],
shorten_story'=> SUBSTR($行['故事'],0,150)。 '...'); * /
$ ROW_APP_THIRDPART [] = $行;
//}$ JSON_ARRAY_APP ['应用'] = $ ROW_APP;
$ JSON_ARRAY_DATA_1 ['新闻'] = $ ROW_APP_DATA;
$ JSON_ARRAY_DATA_2 ['实际'] = $ ROW_APP_THIRDPART;
$ JSON_ARRAY_DATA ['数据'] = array_merge($ JSON_ARRAY_DATA_1,$ JSON_ARRAY_DATA_2);
$ JSON_OUTPUT = array_merge($ JSON_ARRAY_APP,$ JSON_ARRAY_DATA);
回声json_en code($ JSON_OUTPUT);}其他{
出口();
}
我发现的iconv
要转换的字符集设置为UTF-8的最佳方法。您可以使用PHP的 array_walk_recursive
用多维数组的工作:
$阵列=阵列(); //这是您的多维数组array_walk_recursive($阵列功能(安培; $价值$键){
如果(IS_STRING($值)){
$值=的iconv('窗口1252','utf-8',$值);
}
});
您可以修改窗口1252
取其字符集你从转换。
i have multidimensional arrays generated by PHP with data from database ,but i have chars like "č ć š đ ž" and when i try to output that in json he just returns null , i did some reading about that ,and it says that JSON is only working with UTF-8. So how can i convert those arrays in UTF-8 ? but i still need arrays at the and?
here is code of my script
$sql_main = mysql_connect(DB_HOST, DB_UNM, DB_PSW);
($sql_main)? mysql_select_db(DB_NM) : mysql_error();
$APP_URL_ACCESS = $_GET['app_access_key'];
$sql_app = mysql_query("SELECT * FROM app_sys WHERE APP_OW_C='$APP_URL_ACCESS'") or die(mysql_error());
if(mysql_num_rows($sql_app)==1){
while($row = mysql_fetch_array($sql_app)){
$APP_UA_ID = $row['APP_UA_ID'];
$APP_NM = $row['APP_NM'];
$APP_H_DMN = $row['APP_H_DMN'];
$APP_H = $row['APP_H'];
$APP_H_DB_UNM = $row['APP_H_DB_UNM'];
$APP_DB_NM = $row['APP_DB_NM'];
$APP_H_DB_PSW = $row['APP_H_DB_PSW'];
$APP_H_DB_SRV = $row['APP_H_DB_SRV'];
$APP_ACTIVE = $row['APP_ACTIVE'];
$APP_OW_C = $row['APP_OW_C'];
}
$ROW_APP[] = array(
'APP_UA_ID' => $APP_UA_ID,
'APP_PERMISSION' => $APP_ACTIVE,
'APP_KEY' => $APP_OW_C);
$APP_ARRAY[''] = $ROW_APP;
($APP_ACTIVE == '1')? $sql_connect_app = mysql_connect($APP_H_DB_SRV, $APP_H_DB_UNM, $APP_H_DB_PSW) && mysql_select_db($APP_DB_NM): $_MSG = "Application Is Not Active";
$sql_news = mysql_query("SELECT * FROM news ORDER BY id DESC LIMIT 10") or die(mysql_error());
while($row = mysql_fetch_array($sql_news, MYSQL_ASSOC)){
//$display_json['data'] = array(
//'id' => $row['id'],
// 'title' => $row['title'],
// 'story' => $row['story'],
// 'img' => $row['img'],
// 'author' => $row['author'],
//'datetime' => $row['datetime'],
//'shorten_story' => substr($row['story'], 0, 150) . '...'); */
$ROW_APP_DATA[] = $row;
//
}
$sql_news = mysql_query("SELECT * FROM actual ORDER BY id DESC LIMIT 10") or die(mysql_error());
while($row = mysql_fetch_array($sql_news, MYSQL_ASSOC)){
/*$display_json['data'] = array(
'id' => $row['id'],
'title' => $row['title'],
'story' => $row['story'],
'img' => $row['img'],
'author' => $row['author'],
'datetime' => $row['datetime'],
'shorten_story' => substr($row['story'], 0, 150) . '...'); */
$ROW_APP_THIRDPART[] = $row;
//
}
$JSON_ARRAY_APP['application'] = $ROW_APP;
$JSON_ARRAY_DATA_1['news'] = $ROW_APP_DATA;
$JSON_ARRAY_DATA_2['actual'] = $ROW_APP_THIRDPART;
$JSON_ARRAY_DATA['data'] = array_merge($JSON_ARRAY_DATA_1, $JSON_ARRAY_DATA_2);
$JSON_OUTPUT = array_merge($JSON_ARRAY_APP, $JSON_ARRAY_DATA);
echo json_encode($JSON_OUTPUT);
}else{
exit();
}
I've found iconv
to be the best method of converting a character set to UTF-8. You can make use of PHP's array_walk_recursive
to work with multidimensional arrays:
$array = array(); // This is your multidimensional array
array_walk_recursive($array, function(&$value, $key) {
if (is_string($value)) {
$value = iconv('windows-1252', 'utf-8', $value);
}
});
You can change windows-1252
to whichever character set you're converting from.
这篇关于数组转换为UTF-8? PHP JSON的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!