在android中将数据传递给json时单引号不起作用
Posted
技术标签:
【中文标题】在android中将数据传递给json时单引号不起作用【英文标题】:Single Quote Doesnt working while pass data to json in android 【发布时间】:2014-05-21 13:14:31 【问题描述】:我正在开发应用程序,在该应用程序中,我需要通过 json 数组将发送到服务器的所有数据传递给确切的用户。
但我的问题是当我传递单引号消息时不会发送到服务器。
我试过了。
text=text.replaceAll("'","\'");
但我的问题是
-
当用户按单引号时,消息不发送。
当用户按两次单引号时,仅发送一个单引号。
请给出解决方案。
【问题讨论】:
如果你在没有 replaceAll() 的情况下传递整个文本会发生什么? 如果我们找不到解决方案,您可以使用 Base64 编码的用户消息 @PoojaRoy,发布消息时使用 UTF-8 @SwetaSharma 仍然无法使用单引号 不发送到底是什么意思?消息不离开手机或服务器不接受?这显然是一个转义问题,因为如果您使用两个引号,一个是“发送”。请张贴 (1) 您在哪里构建您发送的 JSON (2) 您在哪里接收它 (3) 服务器上的任何相关设置,例如魔术引号。 【参考方案1】:将您的 replaceAll("'","\'");
更改为 replaceAll("'","\\u0027");
编辑:
\u0027
是'
的Unicode 表示。除极少数情况外,可以使用 unicode 表示来代替麻烦的字符,例如 '
、"
、@
、?
和 &
。
您可能会丢失单引号字符,因为您的 json 正在经历您无法控制的多层序列化/反序列化。
【讨论】:
你能解释一下为什么会有帮助吗? 编辑了答案以包含在内。谢谢@mabi 的建议;我可能匆忙写下了原始答案。 谢谢,好多了。也就是说,UTF-8 序列在编译时被替换(参考 JLS 3.3),所以运行时效果都是一样的。 @mabi 您是对的,因此在预编译代码中使用 UFT-8 几乎毫无意义。然而,这个问题针对的是 JSON,它本质上不会与编译器交互。在应用程序之间提供 JSON 响应时,使用 Unicode 替换是标准做法。 嗯?来自 OP 的示例代码表明他正在使用 Java 来转换一些输入。您建议的(unicode 转义) sn-p 编译为使用的完全相同的字节码,并标记为未解决 OPs 问题。以上是关于在android中将数据传递给json时单引号不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Android - 在 onCreateViewHolder(..) 中将数据传递给 ViewHolder 构造函数
如何在 Swift(Cocoa 应用程序)中将数据传递给以前的 ViewController