Witam, napisałem skrypt który ma zapisywać plik log.

    $error_message=array
    (
        "database_server_connection" => "Brak połączenia z serwerem baz danych. ",
        "database_connection" => "Brak połączenia z bazą danych. ",
    );
    function get_ip_address($ip2long = true)
    {
        if($_SERVER['HTTP_CLIENT_IP']) $ip = $_SERVER['HTTP_CLIENT_IP'];
        else if($_SERVER['HTTP_X_FORWARDED_FOR']) $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
        else $ip = $_SERVER['REMOTE_ADDR'];
        return $ip;
    }
    function save_to_log($string, $file_name)
    {
        $local_date=date("d.m.Y G:i:s ");
        $file=fopen($file_name."error.log", "a");
        if($file) fputs($file,$local_date.get_ip_address().": ".$string."\n");
        fclose($file);
    }
 

Gdy nie mogę połączyć się z bazą danych uruchamiam ten skrypt takim wywołaniem:

save_to_log($error_message['database_server_connection'].mysql_error(),$xml_config->directory->log); 

i w tym wypadku plik zapisuje mi się w formacie ascii i pojawiają się krzaczki, natomiast gdy wywołam go w taki sposób:

save_to_log($error_message['database_connection'].mysql_error(),$xml_config->directory->log); 

log zapisuje się zakodowany w utf-8 i krzaczków nie ma, możecie mi powiedzieć czy to wina kodu czy serwera?
Plik log wygląda tak:

14.11.2013 1904 127.0.0.1: Brak poĹ‚Ä…czenia z serwerem baz danych. Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia.
14.11.2013 1905 127.0.0.1: Brak poĹ‚Ä…czenia z serwerem baz danych. Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia.
14.11.2013 1916 127.0.0.1: Brak poĹ‚Ä…czenia z serwerem baz danych. Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia.
14.11.2013 1934 127.0.0.1: Brak poĹ‚Ä…czenia z serwerem baz danych. Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia.
14.11.2013 1946 127.0.0.1: Brak poĹ‚Ä…czenia z serwerem baz danych. Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia.

Zlokalizowałem błąd, coś nie działa w tablicy asocjacyjne error_message, czy da się coś zrobić aby mogła ona przechowywać string utf-8?
Przeniosłem komunikaty o błędach(tablicę error message) do pliku xml i dalej jest to samo.
Jeśli najpierw wystąpi wywołam:

save_to_log($error_message['database_connection'].mysql_error(),$xml_config->directory->log);

to plik jest zapisany w utf-8 i polskie znaki wyświetlają się bez problemu, jeśli potem wywołam:

save_to_log($error_message['database_server_connection'].mysql_error(),$xml_config->directory->log);

to plik konwertuje się na ascii i pojawiają się krzaczki, czy to wina serwera czy kodu?