我有一个小的php-snippet,当通过AJAX调用时,从数据库返回一些条目 - 标准的东西,真的。但是,我最近意识到存在一个问题:
有两种可能的方案:
现在,当要求片段更新某些内容时,必须提供一个字符串。如果这个字符串包含一些奇怪的字符,比如说σ
,那么事情就会破坏:
在发送请求的Javascript和数据库接收查询之间,sigma变得无法识别。我想这就是URI是一个URI而不是花哨的IRI。如果是这样,我该如何解决这个问题呢?如果有帮助,则sigma变为σ
。
出于测试目的,我试图通过数据库接口直接输入sigma - 工作正常。 sigma看起来应该如此,但只能从 phpmyadmin GUI中获取!
一旦我从php-snippet请求这个工作sigma,我收到?
。
我可以理解如何通过URI推送sigma是有问题的,但是我不太明白为什么php无法正确处理第二个项目符号中请求的sigma - 我可以发誓php支持utf8_general_ci
,这是数据库的整理。
所以,对于我的问题:
σ
之类的奇数字符进行编码,以便在为UTI目的编码时不会被删除?注意:对于URL / URI / IRI等使用的术语,我一般感到困惑 - 我不一定在该领域受过教育。请原谅任何缩写的屠宰。
附录: Javascript传递给php-snippet的数据被推送到数据库中,用encodeURIComponent()
进行编码。
更新:我已经通过以下方式缩小了问题:Javascript将正确的字符传递给php,但php本身会将错误的字符传递给数据库。由于php本身应该能够处理字符,我有以下问题:是否有可能php无法在mysql_query()
内维护编码?
更多信息:错误传递的σ
(在数据库中记录如下)将在我要求将其返回给php时保持此形式。
此外,由于php使用$_GET[]
从URL中获取字符串,该函数是否可能会干扰编码?
最终补充:这是php文件本身就是问题!当我添加echo 'σ';
时,我得到σ
作为回报。在我看来,由于某种原因,我的php文档不是在utf8编码,我不知道如何调整...
好的,抓一点,那都错了。我已经获得了php的输出,即HTML,看起来是正确的,但即便如此,php通过查询到数据库的方式也是错误的。在查询时编码是否会失败?
答案 0 :(得分:0)
无论如何要缩短,也许你可以在通过JS发布数据到DB之前找到它有用,所以现在尝试尝试插入和更新..
encodeURIComponent(你的post var)