wchar_t char BCB

场景:BCB中怎么将wchar_t*转化成char*类型的

BCB中如何将wchar_t*转化成char*类型的?
BCB中如何将wchar_t*转化成char*类型的?

我现在用的两种函数
1.WideCharToMultiByte(CP_UTF8, 0, WStr, -1, CStr, len, NULL, NULL );
但是用这个函数的时候,很多的特殊符号,或者别的国家的语言会转错。不知道是不是参数写错了

2.char* cLocale = setlocale(LC_ALL, "");
wcstombs(CStr, WStr, wcslen(WStr));
用第二种方法的时候特殊符号倒是正确的。但是会出现多余的字符出来。
比如:<string name="ellipsis" msgid="7899829516048813237">"…"</string>会变成
  <string name="ellipsis" msgid="7899829516048813237">13237">"…"</string>
完全不能理解到底为什么。

请教各位大大,是不是有别的什么办法。或者我有什么地方写的不对,请指出来,我也可以贴出详细的代码。

------解决方案--------------------
用wcstombs,要注意缓冲的长度。

如果用VCL,就简单许多:
strcpy(CStr, AnsiString(WStr).c_str());
即可。

同样,要注意缓冲溢出。