2010-11-22 11 views
2

int PyRun_SimpleString(const char *command) , Python komutunu çalıştırabilen bir işlevdir.Özel kodlama ile C kodundan python komutunu çalıştırın

Bu işlevi programımda arıyorum, ancak command bağımsız değişkeninin kodlamasını nasıl belirleyebilirim. Komutu çalıştırdığımda Python 3'ün varsayılan kodlama olarak UTF-8'i kullandığını gördüm. Bu kodlamayı C düzey API'sinde değiştirebilir miyim? ... veya PyRun_SimpleString -like işlevini çağırırken ekstra bir parametre ile?

cevap

3

Sen komutuna PEP 263 açıklanan "sihirli yorumların" biri başa ekleyebilir:

char buf[1024]; 
snprintf(buf, sizeof(buf), "-*- coding: %s -*-\n", yourEncoding); 
strncat(buf, yourCommand, sizeof(buf) - strlen(buf) - 1); 
PyRun_SimpleString(buf); 
+0

Eh, tamam, o gerçekten de bir çözüm var. – winterTTr

+0

Ama bence bu biraz rahatsız edici değil mi? Ve sadece bir defada kodlamayı belirtmek için bir yol istiyorum ve bunu sonsuza kadar kullanabilirim, bu tür bir işlev var mı? – winterTTr

+0

@winterTTr, bilgime göre, bunu yapmanın tek yolu bu ... –