https://github.com/python/cpython/commit/f90483e13ad48227767cd6d69bc4857843710a5c
commit: f90483e13ad48227767cd6d69bc4857843710a5c
branch: main
author: Wulian233 <1055917...@qq.com>
committer: vstinner <vstin...@python.org>
date: 2025-06-09T15:40:09+02:00
summary:

gh-135001: Explicitly specify the encoding parameter value of 
`calendar.HTMLCalendar` as 'utf-8' (#135002)

files:
M Doc/library/calendar.rst
M Lib/calendar.py
M Lib/test/test_calendar.py

diff --git a/Doc/library/calendar.rst b/Doc/library/calendar.rst
index 39090e36ed9c0d..b292d828841f2f 100644
--- a/Doc/library/calendar.rst
+++ b/Doc/library/calendar.rst
@@ -251,7 +251,7 @@ interpreted as prescribed by the ISO 8601 standard.  Year 0 
is 1 BC, year -1 is
       3) specifies the number of months per row. *css* is the name for the
       cascading style sheet to be used. :const:`None` can be passed if no style
       sheet should be used. *encoding* specifies the encoding to be used for 
the
-      output (defaulting to the system default encoding).
+      output (defaulting to ``'utf-8'``).
 
 
    .. method:: formatmonthname(theyear, themonth, withyear=True)
diff --git a/Lib/calendar.py b/Lib/calendar.py
index 18f76d52ff8581..3be1b50500eb07 100644
--- a/Lib/calendar.py
+++ b/Lib/calendar.py
@@ -565,7 +565,7 @@ def formatyearpage(self, theyear, width=3, 
css='calendar.css', encoding=None):
         Return a formatted year as a complete HTML page.
         """
         if encoding is None:
-            encoding = sys.getdefaultencoding()
+            encoding = 'utf-8'
         v = []
         a = v.append
         a('<?xml version="1.0" encoding="%s"?>\n' % encoding)
@@ -846,7 +846,7 @@ def main(args=None):
     parser.add_argument(
         "-e", "--encoding",
         default=None,
-        help="encoding to use for output"
+        help="encoding to use for output (default utf-8)"
     )
     parser.add_argument(
         "-t", "--type",
@@ -890,7 +890,7 @@ def main(args=None):
         cal.setfirstweekday(options.first_weekday)
         encoding = options.encoding
         if encoding is None:
-            encoding = sys.getdefaultencoding()
+            encoding = 'utf-8'
         optdict = dict(encoding=encoding, css=options.css)
         write = sys.stdout.buffer.write
         if options.year is None:
diff --git a/Lib/test/test_calendar.py b/Lib/test/test_calendar.py
index 7ade4271b7a156..bc39c86b8cf62d 100644
--- a/Lib/test/test_calendar.py
+++ b/Lib/test/test_calendar.py
@@ -417,7 +417,7 @@ def test_output_htmlcalendar_encoding_utf8(self):
         self.check_htmlcalendar_encoding('utf-8', 'utf-8')
 
     def test_output_htmlcalendar_encoding_default(self):
-        self.check_htmlcalendar_encoding(None, sys.getdefaultencoding())
+        self.check_htmlcalendar_encoding(None, 'utf-8')
 
     def test_yeardatescalendar(self):
         def shrink(cal):

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-le...@python.org
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: arch...@mail-archive.com

Reply via email to