ICU 51 not loading ICU data mapping table

216 views Asked by At

I recently moved from using ICU32 to ICU51. But now Mapping table (.ucm) is not getting loaded. I searched the net ant tried the fixes like making sure the path is correct and ends with backslash but still the mapping table is not getting loaded.

sprintf((CCharT *)icuDataDir,"C:\\mybuilds\\icu_data\\");
u_setDataDirectory((CCharT *)icuDataDir);
u_init(&test);
retval = ucnv_countAvailable();
for(count_converter = 0 ;count_converter<retval; count_converter++)
         available_converters = ucnv_getAvailableName(count_converter);

value of test is U_ZERO_ERROR, retval is 230. But in list of available converters i can't see the name of mapping tables stored in "C:\mybuilds\icu_data\".

Using Process Monitor I found out that My application is trying to access C:\mybuilds\icu_data\icu51l\my-cinversion-table.cnv file but earlier it used to work with C:\mybuilds\icu_data\my-cinversion-table.ucm.

1

There are 1 answers

0
Jitendra On BEST ANSWER

ICU_DATA need to be set to the directory containing .cnv file. *.ucm file need to be converted to .cnv file using the utility "makeconv.exe" shipped with icu library and placing these .cnv file inside the ICU_DATA folder ->icu51l solves the issue.

Process Monitor helped in finding the place where icu was looking for icu mapping table.