Retourner au contenu associé (journal : Jouons avec Unicode: Tchars, un Dchars pour Troff)
Posté par Damien Thébault le 03 novembre 2013 à 18:09. En réponse au journal Jouons avec Unicode: Tchars, un Dchars pour Troff. Évalué à 4.
Voilà un petit exemple vite-fait avec iconv, qui prend de l'UCS-4 ("hexadécimal") en entrée et qui sort de l'UTF-8.
#include <stdio.h> #include <stdint.h> #include <stdlib.h> #include <errno.h> #include <iconv.h> #include <endian.h> int main(int argc, char **argv) { uint32_t ucode[] = { htobe32(0x0391), /* A */ htobe32(0x1FB9), /* A& */ htobe32(0x1FB8), /* A' */ htobe32(0x1F09), /* A( */ htobe32(0x1F0D), /* A(/ */ }; char buf[32] = ""; iconv_t cd; char *inbuf, *outbuf; size_t insize, outsize, status, outlen, i; inbuf = (char*)ucode; insize = sizeof(ucode); outbuf = buf; outsize = sizeof(buf); outlen = 0; cd = iconv_open("UTF-8", "UCS-4BE"); do { printf("in: %zu bytes left\n", insize); printf("out: %zu bytes left\n", outsize); status = iconv(cd, &inbuf, &insize, &outbuf, &outsize); if(status == (size_t)-1) { perror("iconv"); exit(1); } } while(insize > 0 && outsize > 0); iconv_close(cd); outlen = sizeof(buf) - outsize; printf("\n"); printf("Output utf-8: \"%.*s\"\n", (int)outlen, buf); printf("\n"); printf("%zu bytes:\n", outlen); for(i=0 ; i<outlen ; i++) { printf("out[%02zu] = 0x%X\n", i, (uint8_t)buf[i]); } return 0; }
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # Re: Bibliothèques
Posté par Damien Thébault . En réponse au journal Jouons avec Unicode: Tchars, un Dchars pour Troff. Évalué à 4.
Voilà un petit exemple vite-fait avec iconv, qui prend de l'UCS-4 ("hexadécimal") en entrée et qui sort de l'UTF-8.