Python Django http有时会使用由unicode字符组成的长字符串进行响应

Python Django http有时会使用由unicode字符组成的长字符串进行响应,python,django,http,arduino,arduino-esp8266,Python,Django,Http,Arduino,Arduino Esp8266,我正在构建一个arduino项目,该项目从运行django web应用程序的raspberry pi服务器请求状态。这个web应用程序很简单,它在数据库中存储一个开关的状态(开或关的真或假含义)。我有一个视图,它返回状态为“status:1”或“status:0”的简单字符串 问题是,有时来自服务器的响应是由unicode字符组成的长字符串形式。当我从Arduino IDE串行监视器复制粘贴字符时,这些字符对我来说是未知的,它们看起来像这样:'⸮'. arduino代码重复加载此页面并检查状态以

我正在构建一个arduino项目,该项目从运行django web应用程序的raspberry pi服务器请求状态。这个web应用程序很简单,它在数据库中存储一个开关的状态(开或关的真或假含义)。我有一个视图,它返回状态为“status:1”或“status:0”的简单字符串

问题是,有时来自服务器的响应是由unicode字符组成的长字符串形式。当我从Arduino IDE串行监视器复制粘贴字符时,这些字符对我来说是未知的,它们看起来像这样:'⸮'. arduino代码重复加载此页面并检查状态以更新项目中的硬件。这个字符串的长度是完全随机的,有时甚至是无限长的。这种发生也是随机的,所以我无法预测它何时发生,也无法预测它为什么会发生

它给我带来的问题是,我正在解析arduino上服务器的响应,当这个无限字符串出现时,板上的程序就会冻结,因为它实际上永远都在解析它。这是完全不能接受的

从arduino上的服务器读取响应的代码是:

while(client.connected() || client.available()){
  char c = client.read();
  Serial.print(c);
}
这不是我用来解析响应的代码,而是我用来通过输出响应找出问题所在的代码。我正在连接串行监视器窗口的屏幕,以便您可以看到问题(在问题的末尾)。要解析响应,我使用TextFinder

在django中创建响应的视图代码:

def state(request, room_name):
  room = Light.objects.get(light_name=room_name)
  out = ""
  if room.light_status:
    out = "Status:1\t"
  else:
    out = "Status:0\t"
  return HttpResponse(out)
你们知道是什么导致了这个问题吗

我还有一个问题可能与此有关,但我不确定。有时响应值错误,导致LED闪烁(仅在随机时间重复一次,这可能是由服务器延迟引起的,谁知道呢)

编辑:我认为字符的ASCII值可能有一些用处。它是255(最后一个ASCII字符)


首先,您的
out
应该是一个dict,即
out={“Status”:“1”}
等。其次,对于您的问题,您可以删除所有非ascii字符,如下所示:


只需将
空白
替换为空,即
'

输出为字符串,HttpResponse需要字符串以字符串的形式返回html页面,如果我想要完整的网页。这就是问题所在,我输出的字符串中没有非ascii字符,它是硬编码字符串,因此不能有任何非ascii字符。你指的是哪一个空格?我给出的链接是,这个家伙用一个
空格
来替换非ascii字符,所以你可以用一个空字符串来代替它。是的,太棒了!但它仍然不能解释为什么它会发送非ascii字符,如果我有硬编码字符串作为不包含任何非ascii字符的输出。我用“Status:1”格式的字符串进行响应,其中有哪些非ascii字符?