diff --git a/sdk/core/azure-core/CHANGELOG.md b/sdk/core/azure-core/CHANGELOG.md index c9111ed9eaa4..f17c5a6d40ee 100644 --- a/sdk/core/azure-core/CHANGELOG.md +++ b/sdk/core/azure-core/CHANGELOG.md @@ -8,6 +8,8 @@ ### Bugs Fixed +- respect text encoding specified in argument (thanks to @ryohji for the contribution) #20796 + ### Other Changes ## 1.19.0 (2021-09-30) diff --git a/sdk/core/azure-core/azure/core/pipeline/transport/_aiohttp.py b/sdk/core/azure-core/azure/core/pipeline/transport/_aiohttp.py index dc03b29639f1..d8365a9a7680 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/_aiohttp.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/_aiohttp.py @@ -353,7 +353,9 @@ def text(self, encoding: Optional[str] = None) -> str: ctype = self.headers.get(aiohttp.hdrs.CONTENT_TYPE, "").lower() mimetype = aiohttp.helpers.parse_mimetype(ctype) - encoding = mimetype.parameters.get("charset") + if not encoding: + # extract encoding from mimetype, if caller does not specify + encoding = mimetype.parameters.get("charset") if encoding: try: codecs.lookup(encoding) @@ -372,7 +374,7 @@ def text(self, encoding: Optional[str] = None) -> str: ) else: encoding = chardet.detect(body)["encoding"] - if not encoding: + if encoding == "utf-8" or encoding is None: encoding = "utf-8-sig" return body.decode(encoding)