我最近从使用ICU32转到了ICU51。但是现在Mapping表(.ucm)没有加载。我搜索了网络蚂蚁尝试修复,如确保路径是正确的,并以反斜杠结束,但仍然没有加载映射表。
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);
测试值是U_ZERO_ERROR, retval是230.但是在可用转换器列表中,我看不到存储在&#34; C:\ mybuilds \ icu_data \&#34;中的映射表的名称。
使用Process Monitor我发现了这一点 我的应用程序正在尝试访问C:\ mybuilds \ icu_data \ icu51l \ my-cinversion-table.cnv文件 但早些时候它曾经用过C:\ mybuilds \ icu_data \ my-cinversion-table.ucm。
答案 0 :(得分:0)
ICU_DATA需要设置为包含.cnv文件的目录。 * .ucm文件需要使用icu库附带的实用程序“makeconv.exe”转换为.cnv文件,并将这些.cnv文件放在ICU_DATA文件夹中 - &gt; icu51l解决了这个问题。
Process Monitor帮助找到了icu寻找icu映射表的地方。