Lower case to upper case german ess-zet



Hi

I have a problem converting german ess-zet ("ß") from lower to uppercase
when using g_unichar_toupper, but it works fine using g_utf8_strup.
Using g_unichar_toupper I get a 0 as result.
Here it is a sample. The output is:

g_unichar_toupper. Lower:'ß', Upper:''
g_utf8_strup. Lower:'ß', Upper:'SS'

int main()
{
    gchar *strLower = "ß";

    // Bad conversion with g_unichar_toupper
    gunichar uniLower = g_utf8_get_char(strLower);
    gunichar uniUpper = g_unichar_toupper(uniLower);
    gchar strUpper[6];
    gint len = g_unichar_to_utf8(uniUpper, strUpper);
    strUpper[len] = '\0';
    printf("\ng_unichar_toupper. Lower:'%s', Upper:'%s'", strLower,
strUpper);
    // Result: g_unichar_toupper. Lower:'ß', Upper:''

    //Good conversion with g_utf8_strup
    gchar *goodUpper = g_utf8_strup (strLower, -1);
    printf("\nGood. Lower:'%s', Upper:'%s'", strLower, goodUpper);
    g_free(goodUpper);
    // Result: g_utf8_strup. Lower:'ß', Upper:'SS'
}

Regards



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]