2
我正在尋找方法將unicode代碼轉換爲utf8。 到目前爲止,我已經學會了我可以手動或使用iconv。Unicode代碼指向utf8和wctomb
我還以爲wctomb會的工作,但它並不:
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
#define CENTER_UTF8 "\xf0\x9d\x8c\x86"
#define CENTER_UNICODE 0x1D306
int main(int argc, char** argv)
{
puts(CENTER_UTF8); //OK
static char buf[10];
int r;
#define WCTOMB(What) \
wctomb(NULL,0); \
r=wctomb(buf,What); \
puts(buf); \
printf("r=%d\n", r);
//Either one fails with -1
WCTOMB(CENTER_UNICODE);
WCTOMB(htonl(CENTER_UNICODE));
}
可能有人請向我解釋爲什麼wctomb不會一個Unicode碼點轉換爲UTF-8。我在Linux上使用utf8語言環境。
只要程序在UTF-8語言環境中運行,就可以工作,否則您需要用調用的UTF-8語言環境的名稱將'setlocale'中的空字符串替換爲空字符串。 –