LINUX.ORG.RU

История изменений

Исправление proud_anon, (текущая версия) :

Там куда я посылаю, требуется, чтобы символы были в юникоде.

В Юникоде есть семь схем кодирования — UTF-8, UTF-16BE, UTF-16LE, UTF-16 с BOM/автоопределением порядка байт, UTF-32BE, UTF-32LE и UTF-32 с BOM/автоопределением порядка байт. Тебе какую надо? UTF-8?

Есть у меня массив uint16_t* post_data. Каждый элемент этого массива - это символ в юникоде.

Если привести этот указатель к char*, получится указатель на строку в UTF-16 с нативным порядком байт (на x86 будет little endian). Если тебе это и надо, то так и передавай.

/* if we don't provide POSTFIELDSIZE, libcurl will strlen() by
itself */
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(postthis));

Вот только strlen на строках в UTF-16 делать нельзя, там могут быть нулевые байты в середине строки.

Исправление proud_anon, :

Там куда я посылаю, требуется, чтобы символы были в юникоде.

В Юникоде есть семь схем кодирования — UTF-8, UTF-16BE, UTF-16LE, UTF-16 с BOM/автоопределением порядка байт, UTF-32BE, UTF-32LE и UTF-32 с BOM/автоопределением порядка байт. Тебе какую надо? UTF-8?

Есть у меня массив uint16_t* post_data. Каждый элемент этого массива - это символ в юникоде.

Если привести этот указатель к char*, получится указатель на строку в UTF-16 с нативным порядком байт (на x86 будет little endian). Если тебе это и надо, то так и передавай.

/* if we don't provide POSTFIELDSIZE, libcurl will strlen() by
itself */
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(postthis));

Вот только strlen на строках в UTF-16 делать нельзя, там могут быть нулевые байты в середине строки.

Исходная версия proud_anon, :

Там куда я посылаю, требуется, чтобы символы были в юникоде.

В Юникоде есть семь схем кодирования — UTF-8, UTF-16BE, UTF-16LE, UTF-16 с BOM/автоопределением порядка байт, UTF-32BE, UTF-32LE и UTF-32 с BOM/автоопределением порядка байт. Тебе какую надо? UTF-8?

Есть у меня массив uint16_t* post_data. Каждый элемент этого массива - это символ в юникоде.

Если привести этот указатель к char*, получится указатель на строку в UTF-16 с нативным порядком байт (на x86 будет little endian). Если тебе это и надо, то так и передавай.