- 1. Korrigieren
Es gab einen Fehler auf der Website, der sich beim Versuch manifestierte, Dateien mit kyrillischen Namen an Nachrichten anzuhängen. In diesem Fall gab die Website einen Fehler 503 zurück, obwohl die Datenbankcodierung in UTF8 war, nachdem die Datenbankcodierung in vorherigem Artikel korrigiert worden war. Während Django die folgende Nachricht gab:
'latin-1' codec can't encode characters in position 55-64: ordinal not in range(256)
Das Problem war, dass die Servercodierung ursprünglich auf LATIN1 eingestellt war. Das heißt, die folgenden Befehle gaben die folgende Ausgabe:
postgres=# show server_encoding; server_encoding ----------------- LATIN1 (1 row) postgres=# show client_encoding; client_encoding ----------------- LATIN1 (1 row) postgres=# \encoding LATIN1
Das Ausführen des Befehls SET CLIENT_ENCODING TO 'utf8'; hatte keine Wirkung, nach dem Beenden von psql kehrte die Codierung zu LATIN1 zurück.
Korrigieren
Das Beheben dieses Fehlers lief darauf hinaus, die Codierung des Servers selbst festzulegen. Da der Server hauptsächlich russischsprachig ist, wurden die russischsprachigen Locale-Pakete installiert, um das Problem zu beheben.
sudo apt-get install language-pack-ru
Durchführung des Russifizierungsprozesses
sudo update-locale LANG=ru_RU.UTF-8
Und starten Sie den Server neu
sudo reboot
Danach wurde die Server-Client-Codierung zu UTF8
postgres=# show server_encoding; server_encoding ----------------- LATIN1 (1 row) postgres=# show client_encoding; client_encoding ----------------- UTF8 (1 row) postgres=# \encoding UTF8
Das war genug, um den Fehler zu beheben.