Передача иностранных символов через Socket.IO
Я делаю очень простую вещь, просто отправляю сообщение в приложение 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
,
Это новички, так что уже должен быть популярный вопрос SO. Я, наверное, просто не могу его найти. Итак... что я пропустил?