zabbix如何添加图表显示内容_Zabbix图表出现中文乱码解决方案
搭建完成Zabbix監(jiān)控服務(wù)器之后,切換到中文語(yǔ)言,圖表展示出現(xiàn)亂碼,如圖所示
按照網(wǎng)上流傳的上傳windows下的字體的方法,還是不行,最后發(fā)現(xiàn)是PHP編譯時(shí)的問(wèn)題:
php在編譯時(shí)開(kāi)啟了-enable-gd-jis-conv,問(wèn)題原因:
如果PHP編譯時(shí)啟用–enable-gd-jis-conv選項(xiàng)的話,那么非ASCII字符(例如漢字、拼音、希臘文和箭頭) 會(huì)被當(dāng)成EUC-JP編碼 (phpinfo中美其名曰“支持JIS編碼的字體”), 從而導(dǎo)致亂碼(由于西文字體沒(méi)有假名或漢字,一般表現(xiàn)為全部是方框)。imagettftext()函數(shù)是將字符寫(xiě)入到圖片的函數(shù),這個(gè)問(wèn)題就是由這個(gè)函數(shù)導(dǎo)致的;
所以要解決這個(gè)問(wèn)題就有兩種方式:
第一種重新編譯安裝php,禁用-enable-gd-jis-conv選項(xiàng),這種方式代價(jià)較大;
第二種就是修改php代碼:
1、在include/gaphs-inc.php文件中找到imagettftext()這個(gè)函數(shù);
2、找到文件后將一下這段php代碼復(fù)制到該文件中:
function to_entities($string){$len = strlen($string);$buf = "";for($i = 0; $i < $len; $i++){if (ord($string[$i]) <= 127){$buf .= $string[$i];
}else if (ord ($string[$i]) <192){//unexpected 2nd, 3rd or 4th byte
$buf .= "?";
}else if (ord ($string[$i]) <224){//first byte of 2-byte seq
$buf .= sprintf("%d;",((ord($string[$i + 0]) & 31) << 6) +(ord($string[$i + 1]) & 63)
);$i += 1;
}else if (ord ($string[$i]) <240){//first byte of 3-byte seq
$buf .= sprintf("%d;",((ord($string[$i + 0]) & 15) << 12) +((ord($string[$i + 1]) & 63) << 6) +(ord($string[$i + 2]) & 63)
);$i += 2;
}else{//first byte of 4-byte seq
$buf .= sprintf("%d;",((ord($string[$i + 0]) & 7) << 18) +((ord($string[$i + 1]) & 63) << 12) +((ord($string[$i + 2]) & 63) << 6) +(ord($string[$i + 3]) & 63)
);$i += 3;
}
}return $buf;
}
將以上代碼添加到zabbix/include下的graphs-inc.php文件中,之后依次修改該文件中的imagettftext()函數(shù),將最后一個(gè)參數(shù)$string修改為to_entities($string);至此不用重啟服務(wù)就會(huì)發(fā)現(xiàn)zabbix的圖表已經(jīng)可以正確顯示中文了
更多Zabbix相關(guān)教程集合:
ZABBIX 的詳細(xì)介紹:請(qǐng)點(diǎn)這里
ZABBIX 的下載地址:請(qǐng)點(diǎn)這里
總結(jié)
以上是生活随笔為你收集整理的zabbix如何添加图表显示内容_Zabbix图表出现中文乱码解决方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java订单超时取消设计_quartz框
- 下一篇: 首尾非零正则_常用的17种正则表达式