Refs #30451 -- Added HttpRequest._set_content_type_params() hook.
diff --git a/django/core/handlers/wsgi.py b/django/core/handlers/wsgi.py
index 47b008a00417a..1bca7173048f2 100644
--- a/django/core/handlers/wsgi.py
+++ b/django/core/handlers/wsgi.py
@@ -1,5 +1,3 @@
-import cgi
-import codecs
 import re
 from io import BytesIO
 
@@ -80,14 +78,8 @@ def __init__(self, environ):
         self.META['PATH_INFO'] = path_info
         self.META['SCRIPT_NAME'] = script_name
         self.method = environ['REQUEST_METHOD'].upper()
-        self.content_type, self.content_params = cgi.parse_header(environ.get('CONTENT_TYPE', ''))
-        if 'charset' in self.content_params:
-            try:
-                codecs.lookup(self.content_params['charset'])
-            except LookupError:
-                pass
-            else:
-                self.encoding = self.content_params['charset']
+        # Set content_type, content_params, and encoding.
+        self._set_content_type_params(environ)
         try:
             content_length = int(environ.get('CONTENT_LENGTH'))
         except (ValueError, TypeError):
diff --git a/django/http/request.py b/django/http/request.py
index e62e2272b23aa..804db6bf6636e 100644
--- a/django/http/request.py
+++ b/django/http/request.py
@@ -1,3 +1,5 @@
+import cgi
+import codecs
 import copy
 import re
 from io import BytesIO
@@ -69,6 +71,17 @@ def __repr__(self):
     def headers(self):
         return HttpHeaders(self.META)
 
+    def _set_content_type_params(self, meta):
+        """Set content_type, content_params, and encoding."""
+        self.content_type, self.content_params = cgi.parse_header(meta.get('CONTENT_TYPE', ''))
+        if 'charset' in self.content_params:
+            try:
+                codecs.lookup(self.content_params['charset'])
+            except LookupError:
+                pass
+            else:
+                self.encoding = self.content_params['charset']
+
     def _get_raw_host(self):
         """
         Return the HTTP host using the environment or request headers. Skip
