CBP 外设名称。编码问题

Posted

技术标签:

【中文标题】CBP 外设名称。编码问题【英文标题】:CBPeripheral name. Encoding issue 【发布时间】:2014-02-02 12:25:34 【问题描述】:

我希望更改的是显示在 ios 蓝牙设置和我的应用程序中的外围设备名称,以便用户可以识别设备。

我做的是:

    用户在 UITextField 中写了一个名字,我得到了 NSString。 我将 NSString 转换为 NSData。 使用新的外围设备名称写入特征。 外设更改 GATT 设备名称。

如果我使用 UTF8 编码来获取 NSData,一切都可以正常工作,但在波浪线、书面重音和西里尔字母方面存在问题,因为应用程序支持多种语言。不确定问题出在 iOS 设备还是外围设备上。

我的问题:

    我应该使用什么编码? 是否可以使用此字符作为名称? 调用 peripheral.name 时返回的字符串使用什么编码? 是否有另一种解决方案来更改显示的外围设备名称?

【问题讨论】:

您在外设中使用什么堆栈?它支持任意名称吗?规范声明该名称是 utf8s,因此理论上它应该接受任何合法字符串。 “有问题……”是什么意思?您是否尝试过嗅探 BLE 包以查看外围设备是否传输您设置的名称? @allprog。感谢您的回复。我没有找到 name 属性的编码。你是对的,它是 UTF8。我的问题是我没有意识到某些字符需要 2 个字节。所以问题与长度有关。 太棒了!我添加了一个答案以供将来参考。您可以接受它或发布您自己的并接受它。我认为在任何情况下都不要让这个问题悬而未决,并向未来的用户表明您找到了解决方案,这一点非常重要。 【参考方案1】:

名称以符合规范的 UTF-8 编码。 UTF-8 is a multibyte coding,因此将字节值解释为单独的字符可能会导致意外结果。

【讨论】:

以上是关于CBP 外设名称。编码问题的主要内容,如果未能解决你的问题,请参考以下文章

CBP是什么?

[架构之路-20]:目标系统 - 硬件平台 - 嵌入式系统硬件电路基础:架构设计流程总线外设基本电路编码

树莓派外设开发之控制继电器(组)

EXCEL表格中,通过商品名称自动获取对应的商品编码

Windows -1252 不支持编码名称

我应该在 URI 的查询字符串中编码参数名称吗?