PHP和Android之间带有重音字符的消息

PHP和Android之间带有重音字符的消息,php,android,Php,Android,晚安,各位 我有一个恼人的问题,我不知道该怎么办。我尝试了一些我在这里找到的解决方案,但没有任何效果。 我有一个用PHP编写的API,可以在Android应用程序和服务器上的数据库之间架起桥梁。 我有一个EditText字段,用户可以在其中输入文本,然后该文本必须存储在服务器数据库中。问题是,如果该文本包含任何特殊字符(á,ã,ç,…),它就不起作用 例如,如果用户发送单词“avião”,则在数据库中仅记录“avi” 但我有理由认为问题出在PHP API或Android上。我做了一个测试:我让我

晚安,各位

我有一个恼人的问题,我不知道该怎么办。我尝试了一些我在这里找到的解决方案,但没有任何效果。 我有一个用PHP编写的API,可以在Android应用程序和服务器上的数据库之间架起桥梁。 我有一个EditText字段,用户可以在其中输入文本,然后该文本必须存储在服务器数据库中。问题是,如果该文本包含任何特殊字符(á,ã,ç,…),它就不起作用

例如,如果用户发送单词“avião”,则在数据库中仅记录“avi”

但我有理由认为问题出在PHP API或Android上。我做了一个测试:我让我的API返回发送的消息(通过POST方法),这样我就可以使用Log.d在LogCat上调试它。结果它返回“null”

在我的HtppURLConnection上,我有以下内容:

HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("charset", "utf-8");
在我的API的.php上

header("Content-Type: application/json;charset=utf-8");
有人能帮我弄明白吗


提前感谢。

这里可能会发生很多事情

PHP到android:确保您的PHP脚本文件也是用UTF-8编码的。确保您正在使用PHP函数json_encode对json响应进行编码(而不是自己编写json响应)。有时会出现空响应,因为JSON中的某些字符编码不正确

Android到PHP:如果什么都不起作用,您可以在Android端尝试java.net.URLEncoder.encode(“str”,“UTF-8”),在PHP端尝试urldecode


抱歉,在发布答案之前,我会对您的问题进行评论,但我的声誉还不够。

什么是数据库字符集?utf8\u general\u ci。我认为问题不在数据库中的另一个原因是,我有一个HTML页面来测试我的API函数,如果我测试Android应用程序使用的这个函数,不管accentsYep如何,它都能工作,你明白了,我不知所措。utf8_general_ci对于重音字符很好,所以这应该不会有问题。我担心的是,调试时您的Log.d会收到一个空值,但数据库仍然会[部分]接收一些数据。我将不得不更多地考虑它应该在哪里,但我建议查看android设备和php服务器之间的桥梁。哦,如果这有帮助的话:当我删除meta标记以在HTML上设置charset=utf8时,我在php上也有同样的问题:$\u POST['message']==null表示任何重音消息。我会更好地检查那座桥。。。顺便说一下,我的API返回JSON编码的数据。我将PHP阅读器更改为application/json,但仍然出现了相同的错误:感谢您的回答,伙计。是的,在返回null的示例中,我正在打印类似于“echo json_encode('debug'=>$\u POST['message'])”的json。正如我所说,在我的Android中,我有POST方法的内容类型和字符集。在我的PHP中,头是json和字符集。还是不行。我将尝试编码器,尽管我认为它应该更简单。无论如何,谢谢你,如果有用的话,我会给你回报的……:)结果它解决了!我只使用URLEncoder.encode()设置了所有参数,在PHP端没有做任何更改。它工作得很好。非常感谢。:)你好,Joao,你是否再次解码并重新编码你在$\u帖子中的值,以便与你的应用程序进行交流?我想我面临着和你一样的问题,但我无法解决它。