ANSI to UTF8 (dynamic mem alloc?)
-
Good morning :), got a question to the following code piece which converts ansi text to UTF8.
void SynthesizerSvox::ANSI2UTF8( char* text, int size, char*& result )
{
const int SIZE = 10240;if( result ) { delete \[\] result; } result = new char\[SIZE\]; WCHAR w\[SIZE\]={0}; int erg=0; erg=MultiByteToWideChar(CP\_ACP, 0, text, -1, w, SIZE / sizeof(WCHAR)); // ANSI to UNICODE erg=WideCharToMultiByte(CP\_UTF8, 0, w, -1, result, SIZE, 0, 0); // UNICODE to UTF-8
}
I found the code somewhere on the net (thanks!) and it works nicely. Only I´d like to work with dynamic memory allocation (don´t like to limit it) and can´t seem to get it done. The number of bytes used per character vary in UTF8 character set. Is there a solution to this? Souldrift
-
Good morning :), got a question to the following code piece which converts ansi text to UTF8.
void SynthesizerSvox::ANSI2UTF8( char* text, int size, char*& result )
{
const int SIZE = 10240;if( result ) { delete \[\] result; } result = new char\[SIZE\]; WCHAR w\[SIZE\]={0}; int erg=0; erg=MultiByteToWideChar(CP\_ACP, 0, text, -1, w, SIZE / sizeof(WCHAR)); // ANSI to UNICODE erg=WideCharToMultiByte(CP\_UTF8, 0, w, -1, result, SIZE, 0, 0); // UNICODE to UTF-8
}
I found the code somewhere on the net (thanks!) and it works nicely. Only I´d like to work with dynamic memory allocation (don´t like to limit it) and can´t seem to get it done. The number of bytes used per character vary in UTF8 character set. Is there a solution to this? Souldrift
Souldrift wrote:
nd can´t seem to get it done.
Why?
Souldrift wrote:
The number of bytes used per character vary in UTF8 character set.
Yes, but
WideCharToMultiByte
is able to tell you how many bytes are required (MSDN
[^]):cbMultiByte [in] Size, in bytes, of the buffer indicated by lpMultiByteStr. If this parameter is set to 0, the function returns the required buffer size for lpMultiByteStr and makes no use of the output parameter itself.
:)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
Souldrift wrote:
nd can´t seem to get it done.
Why?
Souldrift wrote:
The number of bytes used per character vary in UTF8 character set.
Yes, but
WideCharToMultiByte
is able to tell you how many bytes are required (MSDN
[^]):cbMultiByte [in] Size, in bytes, of the buffer indicated by lpMultiByteStr. If this parameter is set to 0, the function returns the required buffer size for lpMultiByteStr and makes no use of the output parameter itself.
:)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles]