FastCGI і Unicode - c, Unicode, FastCgi

Мені цікаво, чи Fastcgi підтримує unicodeтакі функції, як wprintf. Я отримую буфер через fread і отримую char *, який містить символи unicode. Я маю на увазі байти зі значенням вище 128. Як обробляти їх всередині основної функції fastcgi. Не вдалося викликати mbstowcs.

Я мав на увазі, що використовую розробники FastCGIКомплект бібліотеки. Ява-клієнт надсилає дані, кодовані utf-8, я розшифрував його на стороні сервера, використовуючи функції mbstring у php, але що є еквівалентом цього gcc. Що б там не було, схоже, це не працює в аміно-функції FastCGI. Я подивився на Fascgipp, але не знаю, скільки він використовується і наскільки він стабільний. Далі я не знаходжу затягування величезної бібліотеки, як підвищення, виправдане для невеликої утиліти.

Відповіді:

3 для відповіді № 1

Якщо вам потрібен Unicode, використовуйте utf-8, а не "широкі" символи. Вони набагато більше підходять для Інтернету.


2 для відповіді № 2

Fastcgi - це протокол не API. Тож це залежить від вибраної вами бібліотеки. Так, дивіться бібліотеку http://www.nongnu.org/fastcgipp/


0 для відповіді № 3

Я отримую буфер через fread і отримую char *, який містить символи unicode. Я маю на увазі байти зі значенням вище 128.

Unicode - не єдине кодування з байтамивище 128 в ній. Насправді, більшість інших кодувань так і роблять. Вам потрібно з’ясувати, яке кодування точно використовується у вашому веб-додатку. У будь-якому випадку, я не думаю, що wprintf стане корисним для вас будь-яким чином.


0 для відповіді № 4

FastCGI очікує потоку байтів, тому ваша найбезпечніша ставка - utf-8. Однак, програма повинна працювати з введенням не-utf-8; iconv ідеально підходить для цього.

Ви можете використовувати wprintf, але лише у формі wsnprintf, після чого вміст буфера перетворюється на utf-8 і потім записується у правильний потік FCGI.