【问题标题】:String containing special character converted to escaped representation on Android - how to prevent this?包含特殊字符的字符串在 Android 上转换为转义表示 - 如何防止这种情况?
【发布时间】:2014-05-05 07:01:41
【问题描述】:

在我的家庭网络中,我有一个名为“Den TV”的服务,在“Den”和“TV”之间有一个空格。

当我在移动设备上使用 NSD 管理器解析此服务时,我使用 NsdServiceInfo.getServiceName() 获取服务名称并记录它。我还创建了一个包装 NsdServiceInfo 对象并将其添加到 ListView 的 ArrayAdapter 的对象。

日志消息和列表视图都显示字符串“Den\\032TV”。看起来空格已被替换为“替换”字符(值 26 或八进制 032),然后该字符串已转义为“Den\032TV”,然后进一步转义为“Den\\032TV”。

对我来说,这真是奇怪的行为。为什么 NSD 管理器没有“按原样”返回字符串。 Avahi 对此没有任何问题。即使出于某种我无法理解的原因替换了空间,为什么会被逃脱?两次?

还要注意空格字符的值是 32,所以它可能不是八进制值,但是为什么前面的“0”呢?

谁能帮我弄清楚如何获得真正的价值?

【问题讨论】:

标签: java android string


【解决方案1】:

根据http://www.ietf.org/rfc/rfc6763.txt.
请注意,出于显示目的,nslookup 将空格转义为“\032”,但图形 DNS-SD 浏览器不应该这样做。 所以 "\032" 不是 java 转义字符和协议特定的。

【讨论】:

  • 我给了你一个好的发现,但这只是答案的一部分。例如,为什么“\”会再次转义到“\\”?为什么 NSD Manager 不返回正确的字符串,因为它应该算作图形 DNS-SD 浏览器?如何获得正确的值?
猜你喜欢
  • 2021-05-30
  • 2019-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-02
  • 2021-11-17
  • 2014-03-15
  • 2012-02-02
相关资源
最近更新 更多