zabbix如何添加图表显示内容_Zabbix图表出现中文乱码解决方案
搭建完成Zabbix監控服務器之后,切換到中文語言,圖表展示出現亂碼,如圖所示
按照網上流傳的上傳windows下的字體的方法,還是不行,最后發現是PHP編譯時的問題:
php在編譯時開啟了-enable-gd-jis-conv,問題原因:
如果PHP編譯時啟用–enable-gd-jis-conv選項的話,那么非ASCII字符(例如漢字、拼音、希臘文和箭頭) 會被當成EUC-JP編碼 (phpinfo中美其名曰“支持JIS編碼的字體”), 從而導致亂碼(由于西文字體沒有假名或漢字,一般表現為全部是方框)。imagettftext()函數是將字符寫入到圖片的函數,這個問題就是由這個函數導致的;
所以要解決這個問題就有兩種方式:
第一種重新編譯安裝php,禁用-enable-gd-jis-conv選項,這種方式代價較大;
第二種就是修改php代碼:
1、在include/gaphs-inc.php文件中找到imagettftext()這個函數;
2、找到文件后將一下這段php代碼復制到該文件中:
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()函數,將最后一個參數$string修改為to_entities($string);至此不用重啟服務就會發現zabbix的圖表已經可以正確顯示中文了
更多Zabbix相關教程集合:
ZABBIX 的詳細介紹:請點這里
ZABBIX 的下載地址:請點這里
總結
以上是生活随笔為你收集整理的zabbix如何添加图表显示内容_Zabbix图表出现中文乱码解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java订单超时取消设计_quartz框
- 下一篇: graphpad多条不同的曲线_Grap