Problem with Umlaut in library names (Seafile Pro 8 / 9)

Hi,
we just migrated a test server from seafile pro 7.0.19 on centos to pro 8.0.17 on docker (podman). Everything is running fine, so far. German umlauts in library names are displayed correctly in my own library. But when I open the menu “Shared with me”, the umlauts are wrong. In 7.0.19 everything was ok. Is this a wrong configuration setting?

Seafile pro 7.0.19:
seafile70
Seafile pro 8.0.17:
seafile80

Thanks,
Dirk

Hi, I’m still struggling with the character encoding in my installation. When I create a new library with special characters in the 7.0.19 server, it is correctly displayed in the web interface and all clients. When I dump the db with mysqldump and import it in my new server (8.0.17 or 9.0.4) only the raw encoded characters are displayed in all clients. A mysql select command gives the same name from the RepoInfo table. Old and new database are created with utf8.

I have no idea, where the error lies. Is it the old server that doesn’t encode the name correctly with utf8? Is it a database import/export error? Is it a configuration error in the new server?

7.0.19 library name in clients: Osnabrücker Straße
7.0.19 database name: Osnabrücker Straße
9.0.4 database name: Osnabrücker Straße
9.0.4 library name in clients: Osnabrücker Straße

Any ideas?

Just a short addition:
when I create the new library “Osnabrücker Straße” with Seafile 9.0.4, the name in the mysql table is exactly the same: “Osnabrücker Straße”. This means to me, that the encoding has been changed between the old Seafile 7.0 and 7.1 or 8.
How can I import my old database to the new server? Is it possible to change the encoding somehow?

The problem could be solved by configuring the databases in the seafile config with the option
connection_charset=latin1
Thanks to my collegue, who found this out :grinning:

I found another solution to convert the strings in the affected tables to utf8 encoding. I think this is a better solution so that everything is in utf8.

MariaDB [seafile-db]> alter table `RepoInfo` modify column name varchar(255) character set latin1;
MariaDB [seafile-db]> alter table `RepoInfo` modify column name varbinary(255);
MariaDB [seafile-db]> alter table `RepoInfo` modify column name varchar(255) character set utf8;
1 Like

Thanks for posting this!

@daniel.pan Could you give this some consideration? If German Umlauts are not properly supported in Seafile, that would be a pity for the German Seafile user base.

All database tables in Seafile should have utf8 encoding (some special fields should use utf8mb4 to support emoji), and connection_charset in the client side (Seafile is a client of MySQL) should use utf8 or utf8mb4 encoding.

I think the problem is caused by a wrong encoding of database when you use old version, and somehow it can work.

To correct the problem, the database table encoding should be changed to utf8 and connection_charset should be set to utf8. For old entries, you can convert them from latin1 to utf8 manually, or you can delete old entries in RepoInfo, they will be populated again to the database when the libraries are used (the original information is stored in commit objects).

2 Likes

Thanks to Daniel for the explanation. The problem was, that I wasn’t aware that the old clients are connecting with latin1. The databases are configured with utf8 and I did not use the connection_charset option. So I assumed that everything is running with utf8.