У меня есть этот класс в файле в кодировке UTF-8 с именем EnUTF8.Class.php :
class EnUTF8 {
public function ñññ() {
return 'ñññ()';
}
}
и в другом файле в кодировке UTF-8:
require_once('EnUTF8.Class.php');
require_once('OneBuggy.Class.php');
$utf8 = new EnUTF8();
//$buggy = new OneBuggy();
echo (method_exists($utf8, 'ñññ')) ? 'ñññ() exists!' : 'ñññ() does not exist...';
echo "\n\n----------------------------------\n\n"
print_r(get_class_methods($utf8));
echo "\n----------------------------------\n\n"
echo $utf8->ñññ();
, который дает ожидаемый результат:
ñññ() exists!
----------------------------------
Array
(
[0] => ñññ
)
----------------------------------
ñññ()
но если ...
require_once('EnUTF8.Class.php');
require_once('OneBuggy.Class.php');
$utf8 = new EnUTF8();
$buggy = new OneBuggy();
echo (method_exists($utf8, 'ñññ')) ? 'ñññ() exists!' : 'ñññ() does not exist...';
echo "\n\n----------------------------------\n\n"
print_r(get_class_methods($utf8));
echo "\n----------------------------------\n\n"
echo $utf8->ñññ();
, тогда появляется странность !!!:
ñññ() does not exist!
----------------------------------
Array
(
[0] => ñññ
)
----------------------------------
Fatal error: Call to undefined method EnUTF8::ñññ() in /var/www/test.php on line 16
Дело в том, что OneBuggy.Class.php тоже кодируется в формате UTF-8 и абсолютно ничего не делит с EnUTF8.Class.php , так что ...
гдеэто ошибка?
ОБНОВЛЕНО:
Ну, после долгого времени отладки я нашел это в OneBuggy.Class.php конструктор:
setlocale (LC_ALL, "es_ES@euro", "es_ES", "esp");
так я и сделал ...
//setlocale (LC_ALL, "es_ES@euro", "es_ES", "esp");
и теперь работает, но почему?.