mirror of
https://github.com/aljazceru/mcp-python-sdk.git
synced 2025-12-19 14:54:24 +01:00
Force stdin/stdout encoding to UTF-8
The character encoding of the stdin/stdout streams in Python is platform- dependent. On Windows it will be something weird, like CP437 or CP1252, depending on the locale. This change ensures that no matter the platform, UTF-8 is used.
This commit is contained in:
committed by
David Soria Parra
parent
5480f67cf9
commit
106619967b
@@ -20,6 +20,7 @@ Example usage:
|
|||||||
|
|
||||||
import sys
|
import sys
|
||||||
from contextlib import asynccontextmanager
|
from contextlib import asynccontextmanager
|
||||||
|
from io import TextIOWrapper
|
||||||
|
|
||||||
import anyio
|
import anyio
|
||||||
import anyio.lowlevel
|
import anyio.lowlevel
|
||||||
@@ -38,11 +39,13 @@ async def stdio_server(
|
|||||||
from the current process' stdin and writing to stdout.
|
from the current process' stdin and writing to stdout.
|
||||||
"""
|
"""
|
||||||
# Purposely not using context managers for these, as we don't want to close
|
# Purposely not using context managers for these, as we don't want to close
|
||||||
# standard process handles.
|
# standard process handles. Encoding of stdin/stdout as text streams on
|
||||||
|
# python is platform-dependent (Windows is particularly problematic), so we
|
||||||
|
# re-wrap the underlying binary stream to ensure UTF-8.
|
||||||
if not stdin:
|
if not stdin:
|
||||||
stdin = anyio.wrap_file(sys.stdin)
|
stdin = anyio.wrap_file(TextIOWrapper(sys.stdin.buffer, encoding="utf-8"))
|
||||||
if not stdout:
|
if not stdout:
|
||||||
stdout = anyio.wrap_file(sys.stdout)
|
stdout = anyio.wrap_file(TextIOWrapper(sys.stdout.buffer, encoding="utf-8"))
|
||||||
|
|
||||||
read_stream: MemoryObjectReceiveStream[types.JSONRPCMessage | Exception]
|
read_stream: MemoryObjectReceiveStream[types.JSONRPCMessage | Exception]
|
||||||
read_stream_writer: MemoryObjectSendStream[types.JSONRPCMessage | Exception]
|
read_stream_writer: MemoryObjectSendStream[types.JSONRPCMessage | Exception]
|
||||||
|
|||||||
Reference in New Issue
Block a user