Hello all again.
I am having a hard time to convert UTF8 text to ISO-8859-7. Here is what I am doing so far
Code:
const char* to = "ISO-8859-7";
const char* from = "UTF-8";
size_t text_len = 0;
APTR text = <here is the unicode text>
char *output;
LONG output_len = 0;
ULONG fromMib = GetCharsetNumber(from, CSF_IANA_MIMENAME);
if (fromMib == 0)
fromMib = GetCharsetNumber(from, CSF_IANA_NAME);
if (fromMib == 0)
fromMib = GetCharsetNumber(from, CSF_IANA_ALIAS);
ULONG toMib = GetCharsetNumber(to, CSF_IANA_MIMENAME);
if (toMib == 0)
toMib = GetCharsetNumber(to, CSF_IANA_NAME);
if (toMib == 0)
toMib = GetCharsetNumber(to, CSF_IANA_ALIAS);
printf("DBG: %s, %ld -> %s, %ldn", from, fromMib, to, toMib);
output_len = GetLength(text, text_len, fromMib);
printf("DBG: output_len %ldn", output_len);
LONG dstEnc = 0;
struct TagItem tags[] = { { CST_DoNotTerminate, FALSE }, { CST_GetDestEncoding, &dstEnc }, { TAG_DONE, 0 } };
printf("DBG: Text: %dn%sn", text_len, (char *)text);
LONG result = ConvertTagList((APTR)text, text_len, (APTR)output, output_len, fromMib, toMib, tags);
printf("DBG: dstEnc: %ldn", dstEnc);
if (result <= 0)
{
printf("DBG: failed converting from '%s' to '%s'n", from, to);
return 2;
}
printf("DBG: ~%s~n", output);
What I am getting at the debug output is the following:
Code:
DBG: UTF-8, 106 -> ISO-8859-7, 10
DBG: output_len 32
DBG: Text: 58
<here is the unicode text printed>
DBG: dstEnc: 10
DBG: failed converting from 'UTF-8' to 'ISO-8859-7'
DBG: ~(null)~
Although that it gets the text correctly, and this is visible from the correct length count (Text: 58) and when it is printed at the terminal, the conversion of it always fail.
Also, the CST_GetDestEncoding seems to get the right Mib for ISO-8859-7
Any ideas will be helpful.