1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
/*
* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
* Copyright (C) 2009 - DIGITEO - Allan CORNET
*
* This file must be used under the terms of the CeCILL.
* This source file is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at
* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
*
*/
/*--------------------------------------------------------------------------*/
#include <windows.h>
#include "xmlEncoding.h"
/*--------------------------------------------------------------------------*/
wchar_t *toWideString(char *_Str)
{
int nwide = 0;
wchar_t *_buf = NULL;
if(_Str == NULL) return NULL;
nwide = MultiByteToWideChar(CP_UTF8, 0, _Str, -1, NULL, 0);
if(nwide == 0) return NULL;
_buf = (wchar_t *)calloc(nwide, sizeof(wchar_t));
if(_buf == NULL) return NULL;
if(MultiByteToWideChar(CP_UTF8, 0, _Str, -1, _buf, nwide) == 0)
{
free(_buf);
_buf = NULL;
}
return _buf;
}
/*--------------------------------------------------------------------------*/
char *toUTF(wchar_t *_wcStr)
{
DWORD size = 0;
char *buf = NULL;
if ((wchar_t *)NULL == _wcStr) return (char *)NULL;
size = WideCharToMultiByte(CP_UTF8, 0, _wcStr, -1, NULL, 0, NULL, 0);
if (size == 0) return (char *)NULL;
size += 1;
buf = (char*)calloc(size, sizeof(char));
if (buf)
{
WideCharToMultiByte(CP_UTF8, 0, _wcStr, -1, buf, size, NULL, 0);
if (size <= 0)
{
free(buf);
return NULL;
}
}
return buf;
}
/*--------------------------------------------------------------------------*/
|