Невозможно отправить данные POST обратно в GB2312. Я думаю, что UTF-8 является рекомендацией W3C, и все новые браузеры отправляют данные только в формате Latin-1 или UTF-8.
Мы смогли вернуть данные в кодировке GB2312 в старом IE на Win 95, но, как правило, в новых браузерах на основе Unicode это невозможно.
См. Этот тест на Firefox,
POST / HTTP/1.1
Host: localhost:1234
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 46
Моя страница находится в GB2312, и я везде указывал GB2312, но Firefox просто игнорирует его.
Некоторые неработающие браузеры даже кодируют китайский на латинице-1. Недавно мы добавили скрытое поле с известным значением. Проверяя значение, мы можем выяснить кодировку.
request.getCharacterEncoding () возвращает кодировку из Content-Type. Как видно из моего следа, он всегда равен нулю.