Specifying the Byte Order Encoding

Unicode clients using the C Main API to communicate with Unicode-enabled Essbase applications must send the UTF-8 encoded Unicode byte order mark (BOM) in the text stream immediately after calling any of the following functions:

To send the BOM, use EssSendString, as shown in the following examples:

void ESS_BeginUpdate()
{
    ESS_STS_T sts = ESS_STS_NOERR;
    ESS_BOOL_T Store;
    ESS_BOOL_T Unlock;
    ESS_STR_T query = "";
    /* Begin Update */
    Store = ESS_TRUE;
    Unlock = ESS_FALSE;
    sts = EssBeginUpdate (hCtx, Store, Unlock);
    printf("EssBeginUpdate sts: %ld\n",sts);
    /* Send update specification */
    //String with BOM characters
    query = "\xEF\xBB\xBF 'marché' 'New York' 'Actual' 'Sales' '100-10' 5";
    if(!sts)
        sts = EssSendString(hCtx, query);
    /* End Update */
    if(!sts)
        sts = EssEndUpdate(hCtx);
}
void ESS_BeginReport()
{
    ESS_STS_T sts = ESS_STS_NOERR;
    ESS_STR_T rString = ESS_NULL;
    ESS_STR_T query = ESS_NULL;
    sts = EssBeginReport (hCtx, ESS_TRUE, ESS_FALSE);
    printf("EssBeginReport sts: %ld\n",sts);
    if(!sts)
    {
        //String with BOM characters
        query = "\xEF\xBB\xBF 'New York' 'Actual' 'Sales' '100-10' 'marché' 'Jan' !";
        sts = EssSendString(hCtx, query);
    }
    if(!sts)
        sts = EssEndReport (hCtx);
    if(!sts)
        sts = EssGetString(hCtx,&rString);
 
    while ((!sts) && (rString != NULL))
    {
        printf("%s", rString);
        EssFree (hInst, rString);
        sts = EssGetString (hCtx, &rString);
    }
    printf("\n");
}