Markdown 电报不能转义某些标记字符

Markdown 电报不能转义某些标记字符,markdown,telegram-bot,Markdown,Telegram Bot,电报不会转义某些标记字符,例如: 这个很好用 _测试\\u测试_ 但是这个返回解析错误 *测试\*测试* 我做错了什么?事实上,两人都犯了错误。 { "ok": false, "error_code": 400, "description": "Bad Request: Can't parse message text: Can't find end of the entity starting at byte offset 11" } 听起来电报不支持标记转义字符,所以我建议

电报不会转义某些标记字符,例如:

  • 这个很好用

    _测试\\u测试_

  • 但是这个返回解析错误

    *测试\*测试*


我做错了什么?

事实上,两人都犯了错误。

{
  "ok": false,
  "error_code": 400,
  "description": "Bad Request: Can't parse message text: Can't find end of the entity starting at byte offset 11"
}
听起来电报不支持标记转义字符,所以我建议您改用HTML:
test*test

唯一的解决方法是在
parse_模式下使用
HTML


您应该使用
'\\'
来转义标记标记
*.[`
,即改为发送此标记:

*测试\\*测试*

String escapedMsg = toEscapeMsg
    .replace("_", "\\_")
    .replace("*", "\\*")
    .replace("[", "\\[")
    .replace("`", "\\`");

不要转义
]
字符。如果
[
被转义,
]
将被视为普通字符。

pdenti的回答仅替换消息中找到的第一个字符。使用带有全局标记的正则表达式替换所有正则表达式

String escapedMsg = toEscapeMsg
    .replace(/_/g, "\\_")
    .replace(/\*/g, "\\*")
    .replace(/\[/g, "\\[")
    .replace(/`/g, "\\`");

此显示粗体字符串
test\test
,不带“*”。但是我想显示粗体的
test*test
…是的,你是对的。电报在转义字符方面有一些问题。我编辑了我的答案,并提出了另一种方法。可能向电报机器人支持部门报告此错误。@Oleg,你错了。您是否尝试过直接在失眠或其他REST工具中发送此序列,或者从代码中发送此序列?如果您的语言使用``作为转义字符,则必须将其加倍。它与语言无关,因为电报本身不支持此功能。为了测试,我用了邮递员。此外,您可以在电报文档中发现,它们提供了一些HTML实体(与转义相同),这对我来说适用于当前电报版本1.5.6。这在诸如“test_test”之类的文本上失败。例如,它将生成消息“test\\ u test”。对于转义多个字符,最好使用带有全局标志的正则表达式。这为我解决了这个问题!干杯当转义多个点时
尝试
。替换(/\./g,“\\.”)
为甲烷工作是不正确的。每一个事件都会被替换,就像javadocs一样:你有没有在
MarkdownV2
中遇到过类似的问题,真是悲哀但真实!