Я решил проблему с обходным путем:
import urlparse
import sys
print "Content-Type: text/plain;charset=utf-8"
print
data=dict(urlparse.parse_qsl(sys.stdin.read()))
for field in data:
print field,data[field]
В моем конкретном случае скрипт будет принимать только данные POST (я бы использовал $ _POST в PHP, исключая $ _GET). Его можно легко изменить, чтобы иметь возможность анализировать данные GET, будь то вместо или в дополнение к POST.
Однако мне все равно было бы интересно узнать, почему первоначальный подход не сработал.