Updated: 8 October 2026 · Applies to: Centova Cast v3 (current release 3.3.4), language files according to Centova; encoding checks tested with file 5.46, iconv (glibc 2.41), gettext 0.23 and MariaDB 11.8 on Debian 13
Centova Cast works only in UTF-8 internally, so a language file must be saved as UTF-8 for accented and non-Latin letters to display correctly. If you see ö instead of ö, wrong letters or question marks after editing a translation, the .po file was most likely saved in another encoding, often the Windows "ANSI" code page. Re-save it as UTF-8 without a byte order mark (BOM), or convert it on the server with iconv, then run updatelanguages and restart Centova Cast.
What the symptoms tell you
GesamtgröÃeinstead ofGesamtgröße: UTF-8 text was read as Latin-1 and saved again, so each special letter turned into two characters. This is also what you get if you convert a file that was already UTF-8 a second time, so check the encoding before converting.- Completely wrong letters, such as
Ïàðîëüinstead ofПароль: the file was converted from the wrong code page (here a Windows-1251 Cyrillic file treated as Windows-1252). - Question marks, such as
??????: the characters were replaced when the text passed through an encoding that cannot hold them (for example a latin1 database column, see the last section). Converting will not bring them back; type them again. - A replacement character (
�): single 8-bit bytes reached a page that expects UTF-8.
Fix a language file on the server
These steps need root access to the Centova Cast server over SSH. Replace de_DE with your locale folder.
- Go to the locale folder and check the encoding of the files:
cd /usr/local/centovacast/system/i18n/locale/de_DE file -i common.po common.po: text/x-po; charset=iso-8859-1
A correct file showscharset=utf-8. Note thatfilereported both our Windows-1252 and our Windows-1251 test files asiso-8859-1: it cannot tell these code pages apart, so you need to know which language or editor the file came from. - Confirm it is not valid UTF-8. A valid file gives no output; ours failed:
iconv -f UTF-8 -t UTF-8 common.po > /dev/null iconv: illegal input sequence at position 635
- Keep the original and convert it. Use
WINDOWS-1252for Western European languages,WINDOWS-1251for Cyrillic andWINDOWS-1250for Central European languages (iconv -llists every name):cp common.po common.po.orig iconv -f WINDOWS-1252 -t UTF-8 common.po.orig -o common.po file -i common.po common.po: text/x-po; charset=utf-8 grep Gesamt common.po msgstr "Gesamtgröße: %s MB"
If the letters are still wrong, copycommon.po.origback and try another source encoding. - Remove a BOM if there is one. Centova recommends UTF-8 without a BOM, and the gettext tools reject it too:
file common.po common.po: GNU gettext message catalogue, Unicode text, UTF-8 (with BOM) text msgfmt -c -o /dev/null common.po common.po:1:2: syntax error msgfmt: found 1 fatal error sed -i '1s/^\xEF\xBB\xBF//' common.po file common.po common.po: GNU gettext message catalogue, Unicode text, UTF-8 text
- Check the whole file. With the gettext tools installed (
apt install gettextordnf install gettext),msgfmt -c -o /dev/null common.poprints nothing for a good file. A file that is still not UTF-8 givesinvalid multibyte sequenceerrors. Also check that the header still says"Content-Type: text/plain; charset=UTF-8\n", as in Centova's templates. - Repeat for the other
.pofiles you edited (user.po,external.poand so on), then rebuild the language database and restart:/usr/local/centovacast/sbin/updatelanguages /usr/local/centovacast/centovacast restart
For more iconv examples, including converting many files at once, see how to convert files to UTF-8 encoding in Linux.
Editing translations on your computer
- Poedit is what Centova recommends. According to Centova, it keeps special characters correct automatically.
- Notepad++: before saving, choose Encoding > Convert to UTF-8 (not the BOM variant).
- Change only the
msgstrlines and keep placeholders such as%sexactly as they are.msgfmtdoes not catch a missing placeholder in Centova's files (our test file without%spassed), so check them by eye.
If the new text does not appear at all, see why language changes do not show up in Centova Cast. The full translation procedure is in Centova Cast v3 localization.
If the wrong characters are in song titles
Language files only cover the interface text. When artist or track names look wrong, check the tags in the audio files first. After fixing tags, use Options > Purge and update library in the media library: according to Centova, a normal library update skips files it has already indexed.
Also check that the database can store the characters. Read the database name from DB_NAME in /usr/local/centovacast/etc/centovacast.conf, then run (read-only):
mysql -u root -p -e "SELECT table_name, table_collation FROM information_schema.TABLES WHERE table_schema='YOUR_DB_NAME';"
Collations starting with utf8mb4 store any language. A latin1 table cannot hold Cyrillic, Greek or Asian scripts. In our MariaDB 11.8 test, inserting Пароль into a latin1 column failed in the default strict mode:
ERROR 1366 (22007) at line 1: Incorrect string value: '\xD0\x9F\xD0\xB0\xD1\x80...' for column `radio_test`.`tracks_latin1`.`title` at row 1
With strict mode off, the row was saved as ?????? and the original text was lost. Do not convert Centova's tables yourself: back up first (see backing up Centova Cast accounts) and ask Centova support or your provider.
Official documentation: Centova Cast v3 localization.