【发布时间】:2019-02-06 11:01:27
【问题描述】:
我需要创建一个库来公开一些 C API。
get_ble_list(char **deviceNames);
这里我使用另一个第三方库来获取蓝牙设备列表,它返回设备名称为 CAtlStringW。 现在我需要将其转换为我能够做到的普通 C 字符数组。但是当涉及到非 ASCII、Unicode 字符时,我没有得到预期的结果。 例如:我将手机上的蓝牙名称设置为മലയാളം。但我得到了???作为使用我的库的测试 GUI 应用程序的输出。
【问题讨论】:
-
字符串是如何编码的? GUI 是否处理该编码?
-
实际上处理 UTF-8 确实相当困难(到 char[] 的天真转换是行不通的)虽然我相信如果你挖掘足够长的时间你会找到一个库.见utfcpp.sourceforge.net
-
Windows API 不能很好地与 UTF-8 配合使用。您需要将其转码为 UTF-16(以
wchar_t作为目标类型)才能对其执行任何操作(注意:转码涉及为结果分配内存并调用函数,not 转换为目标类型)。 -
@Bathsheba 不,utfcpp 在这里不会做任何有用的事情。
标签: c++ visual-c++ unicode visual-studio-2015 utf-8