@@ -688,6 +688,33 @@ def test_result_pairs(self):
688688 for result_type in result_types :
689689 self ._check_result_type (result_type )
690690
691+ def test_parse_qs_encoding (self ):
692+ result = urllib .parse .parse_qs ("key=\u0141 %E9" , encoding = "latin-1" )
693+ self .assertEqual (result , {'key' : ['\u0141 \xE9 ' ]})
694+ result = urllib .parse .parse_qs ("key=\u0141 %C3%A9" , encoding = "utf-8" )
695+ self .assertEqual (result , {'key' : ['\u0141 \xE9 ' ]})
696+ result = urllib .parse .parse_qs ("key=\u0141 %C3%A9" , encoding = "ascii" )
697+ self .assertEqual (result , {'key' : ['\u0141 \ufffd \ufffd ' ]})
698+ result = urllib .parse .parse_qs ("key=\u0141 %E9-" , encoding = "ascii" )
699+ self .assertEqual (result , {'key' : ['\u0141 \ufffd -' ]})
700+ result = urllib .parse .parse_qs ("key=\u0141 %E9-" , encoding = "ascii" ,
701+ errors = "ignore" )
702+ self .assertEqual (result , {'key' : ['\u0141 -' ]})
703+
704+ def test_parse_qsl_encoding (self ):
705+ result = urllib .parse .parse_qsl ("key=\u0141 %E9" , encoding = "latin-1" )
706+ self .assertEqual (result , [('key' , '\u0141 \xE9 ' )])
707+ result = urllib .parse .parse_qsl ("key=\u0141 %C3%A9" , encoding = "utf-8" )
708+ self .assertEqual (result , [('key' , '\u0141 \xE9 ' )])
709+ result = urllib .parse .parse_qsl ("key=\u0141 %C3%A9" , encoding = "ascii" )
710+ self .assertEqual (result , [('key' , '\u0141 \ufffd \ufffd ' )])
711+ result = urllib .parse .parse_qsl ("key=\u0141 %E9-" , encoding = "ascii" )
712+ self .assertEqual (result , [('key' , '\u0141 \ufffd -' )])
713+ result = urllib .parse .parse_qsl ("key=\u0141 %E9-" , encoding = "ascii" ,
714+ errors = "ignore" )
715+ self .assertEqual (result , [('key' , '\u0141 -' )])
716+
717+
691718
692719def test_main ():
693720 support .run_unittest (UrlParseTestCase )
0 commit comments