Hi, I need to start my python application through windows service. For this
purpose I use pywin32.
I'm not able to make a Python instance to evaluate the -X uf8 flag.

This flag must be passed during python invocation only and not when it is
already started.
After some investigations I've found the service launch *pythonservice.exe*
wrapper but I don't know how to pass the flag to the Python interpreter.

Is there another option to set this flag? It is possible to set an env
variable *PYTHONUTF8=1 * but pythonservice.exe doesn't seem to evaluate
it...

*My environment*
*- Windows 11 Home 22H2*
*- Python 3.11.1* (tags/v3.11.1:a7a450f, Dec  6 2022, 19:43:28) [MSC v.1934
32 bit (Intel)] on win32
- *Pywin32 305*
- *Pywin32-ctypes 0.2.0*

*Python documentation*
4.7. UTF-8 mode¶ <https://docs.python.org/3/using/windows.html#utf-8-mode>

New in version 3.7.

Windows still uses legacy encodings for the system encoding (the ANSI Code
Page). Python uses it for the default encoding of text files (e.g.
locale.getencoding()
<https://docs.python.org/3/library/locale.html#locale.getencoding>).

This may cause issues because UTF-8 is widely used on the internet and most
Unix systems, including WSL (Windows Subsystem for Linux).

You can use the Python UTF-8 Mode
<https://docs.python.org/3/library/os.html#utf8-mode> to change the default
text encoding to UTF-8. You can enable the Python UTF-8 Mode
<https://docs.python.org/3/library/os.html#utf8-mode> via the -X utf8 command
line option, or the PYTHONUTF8=1 environment variable. See PYTHONUTF8
<https://docs.python.org/3/using/cmdline.html#envvar-PYTHONUTF8> for
enabling UTF-8 mode, and Excursus: Setting environment variables
<https://docs.python.org/3/using/windows.html#setting-envvars> for how to
modify environment variables.

When the Python UTF-8 Mode
<https://docs.python.org/3/library/os.html#utf8-mode> is enabled, you can
still use the system encoding (the ANSI Code Page) via the “mbcs” codec.

Note that adding PYTHONUTF8=1 to the default environment variables will
affect all Python 3.7+ applications on your system. If you have any Python
3.7+ applications which rely on the legacy system encoding, it is
recommended to set the environment variable temporarily or use the -X
utf8 command
line option.

Note


Even when UTF-8 mode is disabled, Python uses UTF-8 by default on Windows
for:

   -

   Console I/O including standard I/O (see *PEP 528*
   <https://peps.python.org/pep-0528/> for details).
   -

   The filesystem encoding
   
<https://docs.python.org/3/glossary.html#term-filesystem-encoding-and-error-handler>
    (see *PEP 529* <https://peps.python.org/pep-0529/> for details).

from -> https://docs.python.org/3/using/windows.html

Please help me!
Thanks in advance
_______________________________________________
python-win32 mailing list
python-win32@python.org
https://mail.python.org/mailman/listinfo/python-win32

Reply via email to