2016-08-12 1 views
0

J'ai essayé d'ouvrir, de lire et d'imprimer mon fichier contenant le caractère chiness.Comment puis-je imprimer un fichier avec la bibliothèque de l'ICU?

UChar tab[50]; 
UFILE *file; 

if ((file = u_fopen("test.txt", "r", uloc_getDefault(), "UTF-16BE")) == NULL) 
    return (fprintf(stderr, "error: fail top open test.txt")); 
u_fgets(tab, 100, file); 
u_printf("%s\n", tab); 
u_fclose(file); 
return (0); 

En sortie, j'ai: "]]"

Je ne comprends pas cela. Cependant, j'ai mis le système de mon locale en chinois, mon fichier est encodé avec "UTF-16BE" PS: Je suis en train de coder sur un système Windows S'il vous plait ... c'est très important!

Répondre

0

Le problème est probablement que vous utilisez un spécificateur de format incorrect. Le spécificateur de format %s indique u_printf() pour attendre une chaîne char* de style C dans le flux d'argument variadique. Si vous voulez passer une chaîne UTF-16 UChar* comme argument, vous devez utiliser le spécificateur %S. Voir la documentation au http://icu-project.org/apiref/icu4c/ustdio_8h.html, en particulier sous la section Spécification de mise en forme et d'analyse.

changer Alors

u_printf("%s\n", tab); 

à

u_printf("%S\n", tab);