javascript - Stream Deck C++ 插件中的 Unicode 字符串
问题描述
StreamDeck SDK 允许使用 C++ 和 JavaScript 编写插件。我使用的功能之一是设置键标题:
void SetTitle(const std::string &inTitle, const std::string& inContext, ESDSDKTarget inTarget);
inTitle
是设备键上显示的标题。此项目中的所有函数都只接受char*
字符串。在内部,SetTitle
生成 JSON 对象并使用 WebSocket 将其发送到 StreamDesk 程序。
我需要用不同的语言设置标题。JavaScript 插件允许通过简单的方式做到这一点,例如:
SetTitle : function(context, keyPressCounter) {
var json = {
"event": "setTitle",
"context": context,
"payload": {
//"title": "" + keyPressCounter,
"title": "ы",
"target": DestinationEnum.HARDWARE_AND_SOFTWARE
}
};
websocket.send(JSON.stringify(json));
}
此函数在设备上成功显示俄罗斯字母“ы” (0x044B)。使用 WireShark,我发现了这个数据包:
{"event":"setTitle","context":"6AB547E3C555617462ABD483D36ED595","payload":{"title":"\321\213","target":0}}
所以,字符串实际上是0xd1, 0x8b
, 或\321\213\
。如果我在 C++ 程序中使用这个字符串:
mConnectionManager->SetTitle("\321\213", context, kESDSDKTarget_HardwareAndSoftware);
一切正常,显示字母“ы”。但这是硬编码字符串。我需要将任何wchar_t*
字符串转换为char*
. 这里使用什么算法?第三方程序如何将Unicode字符0x044B转换为0xd1 0x8b
?我需要明白这一点。
解决方案
推荐阅读
- awk - How to insert word count as a string in a file?
- java - 对二维整数数组进行排序 Java
- javascript - 如何在文本中显示多行数字的汇总值 [SAPUI5]
- sql - 在sql分析中获取周数作为别名
- python - 过滤数据框熊猫中的关键字/句子
- android - 以编程方式添加的 TextView 不会重置为新行的屏幕开头
- c++ - 我刚刚在代码块中创建了我的第一个 wxwidgets 项目,我想要一个直接运行我的 GUI 的应用程序。请帮助我
- java - JSP 页面 - 输入字段类型“文本”丢弃数字
- python-3.x - 这是一种什么样的理解?
- javascript - 使用引导面板内的图像超链接到选项卡