whelk/unicode.c
author J. Ali Harlow <ali@juiblex.co.uk>
Wed Aug 26 14:48:19 2009 +0100 (2009-08-26)
changeset 5 0ea90868d987
child 13 3073875f1b54
permissions -rw-r--r--
Start 0.2.1
ali@0
     1
#include <stdlib.h>
ali@0
     2
#include <windows.h>
ali@0
     3
#include <winnls.h>
ali@0
     4
#include "_whelk.h"
ali@0
     5
ali@0
     6
char *whelk_utf16_to_utf8(const WCHAR *utf16,int len)
ali@0
     7
{
ali@0
     8
    int n;
ali@0
     9
    char *utf8;
ali@0
    10
    n=WideCharToMultiByte(CP_UTF8,0,utf16,len,NULL,0,NULL,NULL);
ali@0
    11
    if (n)
ali@0
    12
    {
ali@0
    13
	utf8=malloc(n);
ali@0
    14
	if (utf8)
ali@0
    15
	    WideCharToMultiByte(CP_UTF8,0,utf16,len,utf8,n,NULL,NULL);
ali@0
    16
    }
ali@0
    17
    else
ali@0
    18
	utf8=NULL;
ali@0
    19
    return utf8;
ali@0
    20
}
ali@0
    21
ali@0
    22
WCHAR *whelk_utf8_to_utf16(const char *utf8,int len)
ali@0
    23
{
ali@0
    24
    int n;
ali@0
    25
    WCHAR *utf16;
ali@0
    26
    n=MultiByteToWideChar(CP_UTF8,0,utf8,len,NULL,0);
ali@0
    27
    if (n)
ali@0
    28
    {
ali@0
    29
	utf16=malloc(n*sizeof(WCHAR));
ali@0
    30
	if (utf16)
ali@0
    31
	    MultiByteToWideChar(CP_UTF8,0,utf8,len,utf16,n);
ali@0
    32
    }
ali@0
    33
    else
ali@0
    34
	utf16=NULL;
ali@0
    35
    return utf16;
ali@0
    36
}