让我们说有人使用这封信:ë。他们在EditText Box中输入它并正确地存储在MySQL数据库中(通过php脚本)。但要抓住具有该特殊字符的数据库字段会导致Java / Android中的输出为“null”。
看来我的数据库已正确设置和存储。但检索是个问题。我是否必须在PHP方面修复此问题或在Java / Android中处理它? 编辑:我不相信这与PHP方面有任何关系,所以我对Java方面更感兴趣。
答案 0 :(得分:1)
听起来类似于:android, UTF8 - How do I ensure UTF8 is used for a shared preference
我怀疑通过Web服务和Android App之间的Web界面出现问题。一方是发送UTF-16或ISO 8859-1字符,另一方是将其解释为UTF-8(反之亦然)。确保:
与其他答案一样,使用HTTP调试代理检查Android App和Web服务之间发送的字符是否符合预期。
答案 1 :(得分:0)
我建议将数据库访问代码提取到标准Java Env,然后编译并测试它。这有助于您找出问题所在。
即使存在编码问题,通常也不会为空。检查其他问题以及是否抛出其他异常。
如果确定字符串已正确插入,那绝对不是PHP的问题。
答案 2 :(得分:0)
可能是UTF-8和UTF-16之间的混淆,或者您可能用于存储这些国际字符的任何其他字符集。在UTF-16中,字符ë将存储为两个字节,第一个字节为空字节(0x00)。如果这个双字节被错误地传回,称为UTF-8,则空字节将被视为字符串终止符的结尾;导致输出空值而不是国际字符。
首先,您需要100%确保您的国际字符在数据库中正确存储。在网站上的php页面中查看正确的结果并不能保证这一点;因为两个错误可以给你一个权利。在过去,我经常在数据库中看到错误存储的字符,这些字符仍然可以在网页或某个系统上正确显示。这将看起来没问题,直到您需要从另一个系统访问您的数据库,此时;一切都松了,因为你不能在第二个系统上重复同样的错误。