HTTP/2 is binary, instead of textual and dumping in binary would be unreadable and useless. It is intentional by design and it is well documented:
DumpRequest returns the given request in its HTTP/1.x wire
representation. It should only be used by servers to debug client
requests. The returned representation is an approximation only; some
details of the initial request are lost while parsing it into an
http.Request. In particular, the order and case of header field names
are lost. The order of values in multi-valued headers is kept intact.
HTTP/2 requests are dumped in HTTP/1.x form, not in their original
binary representations.
If body is true, DumpRequest also returns the body. To do so, it
consumes req.Body and then replaces it with a new io.ReadCloser that
yields the same bytes. If DumpRequest returns an error, the state of
req is undefined.
You can checkout the implementation details here