Эти функции корректно работают с Юникодом. Кодовая страница не имеет никакого значения (хотя на терминале охвата шрифтов не хватит для всего Юникода). Попробуйте, скажем: import ctypes
ctypes.windll.msvcrt._putwch(1093)
Ну хорошо, это файл. Только к чему вы это сказали? Проверить, что это на самом деле, во время выполнения - не так сложно.
Я уж надеялся, что это полное решение проблемы Юникода в Python под Windows…
То есть я хочу сказать, что печатать Юникод в консоль Windows можно. И не ограничиваясь системной (или какой-то одной) восьмибитной кодировкой. Для этого есть соответствующие API. А Python использует stdout, который идёт из стандартной библитеки Си, которая все эти приколы Windows не знает.
Поставят кеш в Канзасе, и будет сколько угодно. Даже в России есть по крайней мере один кеш. Другой вопрос, что сам кеш должен иметь обладать хорошей связью с «мастером», но это уже проще.
traceroute to v4.lscache4.c.youtube.com (212.188.7.25), 64 hops max, 40 byte packets
1 vpn241-l0.msk.corbina.net (85.21.0.241) 0.660 ms 0.640 ms 0.605 ms
2 * * *
3 mo-crs-be2.msk.corbina.net (195.14.54.252) 12.157 ms 6.516 ms 12.037 ms
4 ko-crs-be4.corbina.net (78.107.184.22) 4.054 ms 3.605 ms 3.873 ms
5 m10-bb-teng2-4.msk.corbina.net (195.14.54.177) 150.144 ms
m10-bb-teng4-3.msk.corbina.net (195.14.54.206) 201.420 ms 66.046 ms
6 m10-cr01-te2-4.msk.stream-internet.net (195.34.36.157) 1.938 ms 1.834 ms *
7 ss-crs-1-be7.msk.stream-internet.net (195.34.59.205) 2.751 ms 2.236 ms 2.291 ms
8 a197-crs-1-be5.msk.stream-internet.net (195.34.59.106) 2.722 ms 2.323 ms 2.317 ms
9 a197-cr01-po6.msk.stream-internet.net (195.34.59.101) 2.343 ms 2.297 ms 2.179 ms
10 a197-cr02-vl1900.msk.stream-internet.net (212.188.0.38) 2.279 ms 2.359 ms 2.390 ms
11 * * *
12 * * *
На хабре давно был топик про похожий прикол с нуль-байтом в URL. Из-за того, что разные браузеры обрабатывали ссылку по-разному, они показывали разную картинку.
Эта программа, как я понял, читает лог, так что если настроить nginx на совместимый формат лога (по умолчанию, кажется, всё даже именно так), то она будет работать и с nginx.
PyObject *
_PySys_Init(void)
{
//...
sysin = PyFile_FromFile(stdin, "", "r", NULL);
sysout = PyFile_FromFile(stdout, "", "w", _check_and_flush);
syserr = PyFile_FromFile(stderr, "", "w", _check_and_flush);
//...
}
А вы что нашли?
Эти функции корректно работают с Юникодом. Кодовая страница не имеет никакого значения (хотя на терминале охвата шрифтов не хватит для всего Юникода). Попробуйте, скажем:
import ctypes
ctypes.windll.msvcrt._putwch(1093)
Ну хорошо, это файл. Только к чему вы это сказали? Проверить, что это на самом деле, во время выполнения - не так сложно.
То есть я хочу сказать, что печатать Юникод в консоль Windows можно. И не ограничиваясь системной (или какой-то одной) восьмибитной кодировкой. Для этого есть соответствующие API. А Python использует stdout, который идёт из стандартной библитеки Си, которая все эти приколы Windows не знает.
traceroute to v4.lscache4.c.youtube.com (212.188.7.25), 64 hops max, 40 byte packets
1 vpn241-l0.msk.corbina.net (85.21.0.241) 0.660 ms 0.640 ms 0.605 ms
2 * * *
3 mo-crs-be2.msk.corbina.net (195.14.54.252) 12.157 ms 6.516 ms 12.037 ms
4 ko-crs-be4.corbina.net (78.107.184.22) 4.054 ms 3.605 ms 3.873 ms
5 m10-bb-teng2-4.msk.corbina.net (195.14.54.177) 150.144 ms
m10-bb-teng4-3.msk.corbina.net (195.14.54.206) 201.420 ms 66.046 ms
6 m10-cr01-te2-4.msk.stream-internet.net (195.34.36.157) 1.938 ms 1.834 ms *
7 ss-crs-1-be7.msk.stream-internet.net (195.34.59.205) 2.751 ms 2.236 ms 2.291 ms
8 a197-crs-1-be5.msk.stream-internet.net (195.34.59.106) 2.722 ms 2.323 ms 2.317 ms
9 a197-cr01-po6.msk.stream-internet.net (195.34.59.101) 2.343 ms 2.297 ms 2.179 ms
10 a197-cr02-vl1900.msk.stream-internet.net (212.188.0.38) 2.279 ms 2.359 ms 2.390 ms
11 * * *
12 * * *
Халявный и быстрый CDN?
Очень заинтересован всевозможными веб-технологиями.
wgh@torlan.ru