wide character ( wchar_t ) - beyondnlp/nlp GitHub Wiki

* utf8 -> ucs ( utf-32 )

#include <stdio.h> #include <string.h> #include <stdlib.h> #include <wchar.h> #include <errno.h> #include <locale.h>

int main( int argc, char *argv[] ){

FILE *fp, *fw;
int wn = 0;
char buffer[1024];
wchar_t wbuffer[1024]={L'\0'};

if( argc != 3 ){
    fprintf( stderr,"%s <utf file> <ucs file>\n" , argv[0] );
    return 0;
}

fp = fopen( argv[1], "r");
fw = fopen( argv[2], "w");
while( fgets( buffer, 1024, fp ) != NULL ){
    setlocale(LC_ALL, "");
    if((wn = swprintf( wbuffer, 1023, L"%s", buffer )) < 0 ) return 0;
    fwrite(  wbuffer, sizeof(wchar_t), wn, fw );
}
fclose(fp);
fclose(fw);
return 0;

}


ucs -> utf-8

#include <stdio.h> #include <string.h> #include <stdlib.h> #include <wchar.h> #include <errno.h> #include <locale.h>

int main( int argc, char *argv[] ){

FILE *fp, *fw;
int wn = 1, n;
char buffer[1024];
wchar_t wbuffer[1024]={L'\0'};

if( argc != 3 ){
    fprintf( stderr,"%s <ucs file> <utf file>\n" , argv[0] );
    return 0;
}

fp = fopen( argv[1], "r");
fw = fopen( argv[2], "w");

setlocale(LC_ALL, "");
while(wn > 0){
    if((wn = fread( wbuffer, sizeof(wchar_t), 1024, fp )) > 0 ){
    if((n = wcstombs( buffer, wbuffer, wn*3 )) == -1 ){
        perror("error:");
    };
    fprintf( fw, buffer );
    wbuffer[0]=L'\0';
    }
}
fclose(fp);
fclose(fw);
return 0;

}

⚠️ **GitHub.com Fallback** ⚠️