UTF-8 can successfully display Spanish characters, however, if your characters are stored in a different encoding, then you'll get cross-encoding disparities (look like trash characters).
It's important to display characters in their original encodings, or otherwise convert the data to the target display encoding. mbstring has a conversion function that fixes these issues.
poedit in utf-8, you must have the charset on the output set to utf-8.
Sticking to gettext, I think that without using bind_textdomain_codeset, PHP's behavior is to fallback on locale-data. This writ, I would strongly recommend sticking to locale and resource bundles instead of using gettext. PHP6 has a fantastic alternative that they've called 'i18n', http://ca3.php.net/manual/en/intro.i18n.php
Glad you solved your problem in one way or the other though