diff --git a/src/wheel/bdist_wheel.py b/src/wheel/bdist_wheel.py
index 4754fd1..7fcf4a3 100644
--- a/src/wheel/bdist_wheel.py
+++ b/src/wheel/bdist_wheel.py
@@ -15,6 +15,7 @@ import sysconfig
 import warnings
 from collections import OrderedDict
 from email.generator import BytesGenerator, Generator
+from email.policy import EmailPolicy
 from glob import iglob
 from io import BytesIO
 from shutil import rmtree
@@ -534,8 +535,13 @@ class bdist_wheel(Command):
                 adios(dependency_links_path)
 
         pkg_info_path = os.path.join(distinfo_path, "METADATA")
+        serialization_policy = EmailPolicy(
+            utf8=True,
+            mangle_from_=False,
+            max_line_length=0,
+        )
         with open(pkg_info_path, "w", encoding="utf-8") as out:
-            Generator(out, mangle_from_=False, maxheaderlen=0).flatten(pkg_info)
+            Generator(out, policy=serialization_policy).flatten(pkg_info)
 
         for license_path in self.license_paths:
             filename = os.path.basename(license_path)

diff --git a/tests/test_bdist_wheel.py b/tests/test_bdist_wheel.py
index 531d9e6..5a6db16 100644
--- a/tests/test_bdist_wheel.py
+++ b/tests/test_bdist_wheel.py
@@ -72,6 +72,45 @@ def test_unicode_record(wheel_paths):
     assert "åäö_日本語.py".encode() in record
 
 
+UTF8_PKG_INFO = """\
+Metadata-Version: 2.1
+Name: helloworld
+Version: 42
+Author-email: "John X. Ãørçeč" <john@utf8.org>, Γαμα קּ 東 <gama@utf8.org>
+
+
+UTF-8 描述 説明
+"""
+
+
+def test_preserve_unicode_metadata(monkeypatch, tmp_path):
+    monkeypatch.chdir(tmp_path)
+    egginfo = tmp_path / "dummy_dist.egg-info"
+    distinfo = tmp_path / "dummy_dist.dist-info"
+
+    egginfo.mkdir()
+    (egginfo / "PKG-INFO").write_text(UTF8_PKG_INFO, encoding="utf-8")
+    (egginfo / "dependency_links.txt").touch()
+
+    class simpler_bdist_wheel(bdist_wheel):
+        """Avoid messing with setuptools/distutils internals"""
+
+        def __init__(self):
+            pass
+
+        @property
+        def license_paths(self):
+            return []
+
+    cmd_obj = simpler_bdist_wheel()
+    cmd_obj.egg2dist(egginfo, distinfo)
+
+    metadata = (distinfo / "METADATA").read_text(encoding="utf-8")
+    assert 'Author-email: "John X. Ãørçeč"' in metadata
+    assert "Γαμα קּ 東 " in metadata
+    assert "UTF-8 描述 説明" in metadata
+
+
 def test_licenses_default(dummy_dist, monkeypatch, tmpdir):
     monkeypatch.chdir(dummy_dist)
     subprocess.check_call(

Incorrect summary in produced wheels starting from 0.38.1
See https://pypi.org/search/?q=%3D%3Futf-8%3Fq%3F
All wheels produced after 2022/11/04 (0.38.1 release date) have incorrect summaries.
tests/test_bdist_wheel.py::test_preserve_unicode_metadata
tests/test_bdist_wheel.py::test_no_scripts tests/test_bdist_wheel.py::test_unicode_record tests/test_bdist_wheel.py::test_licenses_default tests/test_bdist_wheel.py::test_licenses_deprecated tests/test_bdist_wheel.py::test_licenses_override[setup.cfg-[metadata]\nlicense_files=licenses/*\n tests/test_bdist_wheel.py::test_licenses_override[setup.cfg-[metadata]\nlicense_files=licenses/*, tests/test_bdist_wheel.py::test_licenses_override[setup.py-from tests/test_bdist_wheel.py::test_licenses_disabled tests/test_bdist_wheel.py::test_build_number tests/test_bdist_wheel.py::test_limited_abi tests/test_bdist_wheel.py::test_build_from_readonly_tree tests/test_bdist_wheel.py::test_compression[stored] tests/test_bdist_wheel.py::test_compression[deflated] tests/test_bdist_wheel.py::test_wheelfile_line_endings tests/test_bdist_wheel.py::test_unix_epoch_timestamps tests/test_bdist_wheel.py::test_get_abi_tag_old tests/test_bdist_wheel.py::test_get_abi_tag_new