在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 构造函数

将json数据传递给onclick jquery函数

如何将JSON数据传递给laravel中的视图

如何在 Swift(Cocoa 应用程序)中将数据传递给以前的 ViewController

无论控制器如何,如何在 Laravel 中将数据传递给布局?

在 Swift 中将数据传递给另一个 ViewController