Передача иностранных символов через Socket.IO - PullRequest
0 голосов
/ 24 сентября 2018

Я делаю очень простую вещь, просто отправляю сообщение в приложение Flask через Socket.IO.Это работает как английский шарм, но некоторые другие языки ломаются где-то в процессе.

Ниже приведен минимальный рабочий пример.

testapp.py:

from flask import Flask
from flask_socketio import SocketIO

app      = Flask('example')
socketio = SocketIO(app)

@socketio.on('test')
def on_connect(data):
    print(data)

if __name__ == '__main__':
    socketio.run(app)

index.html:

<!doctype html>
<html>
    <body>
        <script type="text/javascript" src="js/socket.io.js"></script>
        <script>
            var socket = io.connect('http://localhost:5000');
            socket.on('connect', function() {
                socket.emit('test', 'ASCII text');
                socket.emit('test', 'Český text');
            });
        </script>
    </body>
</html>

Вместо ожидаемого Český text,Я получаю ÄŚeskĂ˝ text на консоли.

Я использую новейшие версии обоих серверных пакетов (Flask-SocketIO 3.0.2, python-socketio 2.0.0, python-engineio 2.2.0) иклиент (socket.io.js 2.1.1), а также проверил, что оба моих файла имеют кодировку UTF-8.

В некоторых отчетах об ошибках и вопросах упоминается критическое изменение, которое произошло между1.x и 2.x версии, поэтому я попытался использовать некоторые старые версии клиента (1.4.8, 1.7.4) вместо самой новой.Результат был не намного лучше: ÃÅeskÄË text.

Это материал для начинающих, так что, должно быть, уже есть популярный вопрос об этом.Я, наверное, просто не могу его найти.Итак ... что я пропустил?

...