Commit 36d5019
Fix stdio encoding issue: Enforce explicit UTF-8 for correct Unicode handling (#73)
* fix: Enforce UTF-8 encoding for stdio transport
This change replaces the default system encoding with an explicit UTF8Encoding (without BOM)
for both client and server transports. This ensures proper handling of Unicode characters,
including Chinese characters and emoji.
- Use UTF8Encoding explicitly for StreamReader and StreamWriter.
- Add tests for Chinese characters ("上下文伺服器") and emoji (🔍🚀👍) to confirm the fix.
Fixes #35.
* Remove relaxed JSON encoder
* Address PR feedback
---------
Co-authored-by: Stephen Toub <[email protected]>1 parent 96ba2fa commit 36d5019
File tree
5 files changed
+285
-105
lines changed- src/ModelContextProtocol
- Logging
- Protocol/Transport
- Utils/Json
- tests/ModelContextProtocol.Tests/Transport
5 files changed
+285
-105
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
114 | 114 | | |
115 | 115 | | |
116 | 116 | | |
117 | | - | |
| 117 | + | |
118 | 118 | | |
119 | 119 | | |
120 | 120 | | |
| |||
347 | 347 | | |
348 | 348 | | |
349 | 349 | | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
350 | 381 | | |
Lines changed: 57 additions & 27 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | | - | |
| 1 | + | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
9 | | - | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
10 | 11 | | |
11 | 12 | | |
12 | 13 | | |
| |||
59 | 60 | | |
60 | 61 | | |
61 | 62 | | |
| 63 | + | |
| 64 | + | |
62 | 65 | | |
63 | 66 | | |
64 | 67 | | |
| |||
68 | 71 | | |
69 | 72 | | |
70 | 73 | | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
71 | 79 | | |
72 | 80 | | |
73 | 81 | | |
| |||
92 | 100 | | |
93 | 101 | | |
94 | 102 | | |
95 | | - | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
96 | 125 | | |
97 | 126 | | |
98 | 127 | | |
99 | 128 | | |
| 129 | + | |
100 | 130 | | |
101 | | - | |
| 131 | + | |
102 | 132 | | |
103 | 133 | | |
104 | 134 | | |
| |||
134 | 164 | | |
135 | 165 | | |
136 | 166 | | |
| 167 | + | |
137 | 168 | | |
138 | | - | |
139 | | - | |
| 169 | + | |
| 170 | + | |
140 | 171 | | |
141 | 172 | | |
142 | 173 | | |
| |||
161 | 192 | | |
162 | 193 | | |
163 | 194 | | |
164 | | - | |
165 | | - | |
166 | | - | |
| 195 | + | |
167 | 196 | | |
168 | 197 | | |
169 | | - | |
| 198 | + | |
170 | 199 | | |
171 | 200 | | |
172 | 201 | | |
| |||
179 | 208 | | |
180 | 209 | | |
181 | 210 | | |
| 211 | + | |
182 | 212 | | |
183 | 213 | | |
184 | 214 | | |
| |||
230 | 260 | | |
231 | 261 | | |
232 | 262 | | |
233 | | - | |
| 263 | + | |
| 264 | + | |
234 | 265 | | |
235 | 266 | | |
236 | 267 | | |
237 | | - | |
238 | | - | |
239 | | - | |
240 | | - | |
241 | 268 | | |
242 | 269 | | |
243 | 270 | | |
244 | 271 | | |
245 | 272 | | |
246 | | - | |
| 273 | + | |
247 | 274 | | |
248 | 275 | | |
249 | 276 | | |
250 | 277 | | |
251 | 278 | | |
252 | | - | |
253 | | - | |
254 | | - | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
255 | 284 | | |
256 | 285 | | |
257 | 286 | | |
| |||
261 | 290 | | |
262 | 291 | | |
263 | 292 | | |
264 | | - | |
| 293 | + | |
265 | 294 | | |
266 | 295 | | |
267 | 296 | | |
268 | 297 | | |
269 | | - | |
| 298 | + | |
270 | 299 | | |
271 | 300 | | |
272 | 301 | | |
273 | 302 | | |
274 | | - | |
275 | 303 | | |
276 | 304 | | |
277 | 305 | | |
278 | 306 | | |
279 | | - | |
280 | 307 | | |
281 | 308 | | |
282 | 309 | | |
283 | 310 | | |
284 | 311 | | |
285 | | - | |
286 | | - | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
287 | 317 | | |
288 | 318 | | |
289 | 319 | | |
| |||
Lines changed: 63 additions & 18 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
| 2 | + | |
| 3 | + | |
2 | 4 | | |
3 | 5 | | |
4 | 6 | | |
5 | 7 | | |
6 | 8 | | |
7 | | - | |
8 | | - | |
9 | | - | |
| 9 | + | |
| 10 | + | |
10 | 11 | | |
11 | 12 | | |
12 | 13 | | |
| |||
15 | 16 | | |
16 | 17 | | |
17 | 18 | | |
| 19 | + | |
| 20 | + | |
18 | 21 | | |
19 | 22 | | |
20 | 23 | | |
21 | 24 | | |
22 | | - | |
23 | | - | |
| 25 | + | |
| 26 | + | |
24 | 27 | | |
25 | 28 | | |
26 | 29 | | |
| |||
83 | 86 | | |
84 | 87 | | |
85 | 88 | | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
86 | 120 | | |
87 | 121 | | |
88 | 122 | | |
89 | 123 | | |
90 | 124 | | |
| 125 | + | |
| 126 | + | |
91 | 127 | | |
92 | 128 | | |
93 | 129 | | |
94 | 130 | | |
95 | 131 | | |
| 132 | + | |
96 | 133 | | |
97 | 134 | | |
98 | 135 | | |
| |||
114 | 151 | | |
115 | 152 | | |
116 | 153 | | |
117 | | - | |
118 | | - | |
| 154 | + | |
119 | 155 | | |
120 | | - | |
121 | | - | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
122 | 159 | | |
123 | 160 | | |
124 | 161 | | |
| |||
146 | 183 | | |
147 | 184 | | |
148 | 185 | | |
149 | | - | |
| 186 | + | |
150 | 187 | | |
151 | 188 | | |
152 | 189 | | |
| |||
160 | 197 | | |
161 | 198 | | |
162 | 199 | | |
| 200 | + | |
163 | 201 | | |
164 | 202 | | |
165 | 203 | | |
| |||
207 | 245 | | |
208 | 246 | | |
209 | 247 | | |
210 | | - | |
| 248 | + | |
211 | 249 | | |
212 | | - | |
213 | | - | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
214 | 253 | | |
215 | 254 | | |
216 | 255 | | |
217 | | - | |
| 256 | + | |
218 | 257 | | |
219 | 258 | | |
220 | 259 | | |
221 | 260 | | |
222 | | - | |
| 261 | + | |
223 | 262 | | |
224 | 263 | | |
225 | 264 | | |
| |||
235 | 274 | | |
236 | 275 | | |
237 | 276 | | |
238 | | - | |
239 | | - | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
240 | 282 | | |
241 | 283 | | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
242 | 287 | | |
243 | 288 | | |
244 | 289 | | |
| |||
0 commit comments