protected static function generateEncodingMap($iconvName)
{
// Start with array of blanks (" " indicates unknown character).
$charMap = array_fill(0, 128, " ");
// Loop through 128 code points
for ($char = 128; $char <= 255; $char++) {
// Try to identify the UTF-8 character that would go here
$utf8 = @iconv($iconvName, self::INPUT_ENCODING, chr($char));
if ($utf8 == '') {
continue;
}
if (iconv(self::INPUT_ENCODING, $iconvName, $utf8) != chr($char)) {
// Avoid non-canonical conversions (no known examples)
continue;
}
// Replace the ' ' with the correct character if we found it
$charMap[$char - 128] = $utf8;
}
// Join into a 128-character string and return.
$charMapStr = implode("", $charMap);
assert(mb_strlen($charMapStr, self::INPUT_ENCODING) == 128);
return $charMapStr;
}