【发布时间】:2017-04-01 05:45:14
【问题描述】:
我有一个发送 unicode 星号的 javascript。
但 python 将其解释为字母 â - 无论是在控制台还是在日志文件中。
其他 unicode 字符也是格式错误的。
var ws = new WebSocket("ws://127.0.0.1:8888/");
ws.onopen= function(){
console.log('\u2605');
ws.send('\u2605');
ws.close();
}
python中的代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import logging, json
from websocket_server import WebsocketServer
def new_client(client, server):
print("Client id:"+ str(client["id"])+ " has connected")
def client_left(client, server):
print("Client id:"+ str(client["id"])+ " has diconnected")
logfile= open('C:/host/test-log.log', 'a', encoding='utf-8')
logging.basicConfig(stream=logfile,
level=logging.INFO,
format='%(message)s')
def msg_rcvd(client, server, msg):
print (msg);
logging.info(msg);
server = WebsocketServer(8888, host='127.0.0.1')
server.set_fn_new_client(new_client)
server.set_fn_message_received(msg_rcvd)
server.set_fn_client_left(client_left)
server.run_forever()
使用的 WebsocketServer 库:https://github.com/Pithikos/python-websocket-server
有人知道这里有什么问题吗?
编辑:
刚刚在 git hub 上找到了这个页面:
https://github.com/Pithikos/python-websocket-server/issues/19
这似乎是 lib 问题,一些用户已经发布了解决方案:
bytes([i^masks[idx % 4] for idx, i in enumerate(self.read_bytes(payload_length))]).decode()
但是,我完全不知道将这段代码放在哪里。
非常感谢帮助。
【问题讨论】:
标签: javascript python windows utf-8 websocket