Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP和Java中相同的字符串并不相等_Java_Php_Json_Encoding - Fatal编程技术网

PHP和Java中相同的字符串并不相等

PHP和Java中相同的字符串并不相等,java,php,json,encoding,Java,Php,Json,Encoding,当我将一个字符串从PHP发送到Java(Android)时,我遇到了一个奇怪的问题 整个故事相当简单: Java应用程序向PHP脚本发送关键字。PHP脚本在数据库中查找它,并将JSON编码的数组(作为字符串)发送回Java应用程序 我可以在Android的TextView字段中看到这个字符串,它看起来像这样:[{“name”:“Berlin”}] 但是Java不接受它作为有效的JSON字符串(与一些在线JSON验证器不同),因为它不断抛出异常:“JSONArray文本必须在字符1处以“[”开头”

当我将一个字符串从PHP发送到Java(Android)时,我遇到了一个奇怪的问题

整个故事相当简单: Java应用程序向PHP脚本发送关键字。PHP脚本在数据库中查找它,并将JSON编码的数组(作为字符串)发送回Java应用程序

我可以在Android的TextView字段中看到这个字符串,它看起来像这样:
[{“name”:“Berlin”}]

但是Java不接受它作为有效的JSON字符串(与一些在线JSON验证器不同),因为它不断抛出异常:“JSONArray文本必须在字符1处以“[”开头”事实证明,它们并不相等,甚至更令人不安的是:Java将JSON字符串的长度返回为20,而不是19

为什么会这样?没有像Umlauts这样不寻常的字符。第20个字符可能是什么?我怀疑有一些编码问题,但我很确定所有的东西(PHP文件、Java文件)都是UTF-8编码的

(在有人问之前:我可以提供代码,但我不知道哪一部分相关。)

试试看

int ascii_code = jsonString.codePointAt(0)

如果长度不同,则可能由于前导/尾随空格而有所不同


试着看看这个问题。接受的答案提供了一种预处理字符串的方法,以确保这个问题不会发生。

您是否检查了不可见的字符,如?在传入的JSON周围使用java等效的trim()。注意,它是“java”而不是“java”。无需在屋顶上大声喊出来。事实证明java有内置的trim()与php
String s=“Hello World.trim();
相同,我已经尝试过使用trim()没有成功。但是,预处理的想法是我应该看一看的。谢谢!就是这样!它实际上是BOM,但我没有办法让它可见。我花了三天时间阅读JSON解析教程和问题/答案,但这根本不是问题。谢谢!