lost end information when using EthernetClient.readString()

PaulS:

String c=client.readStringUntil('\0');

The sender is NEVER going to put a NULL on the serial port, if it is writing ASCII data (as your server obviously is).

If you have ANY control over the output, make it output some clearly recognizable end of packet marker that is not going to appear in the packet.

If you don't have any control, use a different approach where you DO have control.

Actually that is one of my problems. I am really not clear about what kind of data I'm getting received from the server and how it ends. In fully responded cases:

PaulS:
HTTP/1.1 200 OK
Server: Apache
Vary: Accept-Encoding,User-Agent
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

(some debug information, like username and posted data are listed here)
??MYSQL??[{"varname":"n","dimRows":"1","dimCols":"1","unit":"1","data":"INT","value":"10"}]
0
disconnecting,

Could you tell me, where I can know that the server is writing ASCII data? and which function or class I can use to parse it?
The JSON string is after the trigger "??MYSQL??", I supposed to recognize this trigger and cut out the string behind it.
Thanks very much!