From cf1e6ac51f96b6395ca31739af8729754845ab04 Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Thu, 30 Sep 2021 17:28:21 -0700 Subject: [PATCH 1/2] respect text encoding specified in argument --- sdk/core/azure-core/CHANGELOG.md | 2 ++ sdk/core/azure-core/azure/core/pipeline/transport/_aiohttp.py | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) 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..7d152561d91d 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) From acb95bee0da76842f1a10aac012faa1a8b40258b Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Fri, 1 Oct 2021 09:18:34 -0700 Subject: [PATCH 2/2] update --- sdk/core/azure-core/azure/core/pipeline/transport/_aiohttp.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 7d152561d91d..d8365a9a7680 100644 --- a/sdk/core/azure-core/azure/core/pipeline/transport/_aiohttp.py +++ b/sdk/core/azure-core/azure/core/pipeline/transport/_aiohttp.py @@ -374,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)