NagVis / nagvis

Visualization addon for your open source monitoring core
http://nagvis.org/
GNU General Public License v2.0
115 stars 73 forks source link

Problem with encoding in a map #338

Open trentasis opened 1 year ago

trentasis commented 1 year ago

Hi, I have an error with Nagivs when try to parse a character that it's not UTF8.

I've seen that the error is in the line 116, here:

  return json_encode($arrRet);

I have PHP 5.3.3 and I think the problem is precisely there, in the encoding of the array.

image

trentasis commented 1 year ago

We were able to circumvent the problem addiing in the file /usr/local/nagvis/share/server/core/classes/NagVisMap.php

This line in 116

$arrRet=unserialize(iconv('UTF-8', 'ASCII//TRANSLIT', utf8_encode(serialize($arrRet)))); return json_encode($arrRet);

Instead of:

return json_encode($arrRet);

trentasis commented 1 year ago

The previous fix didn't work finally, but we have a new one that fixes non-utf8 characters displayed on the maps.

file /usr/local/nagvis/share/server/core/classes/NagVisMap.php

This line in 116

function mb_unserialize($string) { $string = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $string); return unserialize($string); }

if (mb_detect_encoding(serialize($arrRet), 'UTF-8', true)) { } else{ $arrRet=mb_unserialize(utf8_encode(serialize($arrRet))); }

    return json_encode($arrRet);
}

}