Php Unicode编码在URL和数据库之间的某个位置失败

Php Unicode编码在URL和数据库之间的某个位置失败,php,url,unicode,Php,Url,Unicode,我有一个小php代码段,当通过AJAX调用时,它会返回一些来自数据库标准的条目。然而,我最近意识到有一个问题: 有两种可能的情况: 调用代码段的方式是在数据库中创建或更新某些内容 调用该代码段时,将以php响应的HTML形式返回信息 现在,当要求代码段更新某些内容时,必须提供一个字符串。如果该字符串包含一些奇数字符,例如σ,则会出现一些问题: 在发送请求的Javascript和接收查询的数据库之间,sigma变得不可识别。我想这是因为URI是一个URI而不是花哨的IRI。如果是这样,我该如

我有一个小php代码段,当通过AJAX调用时,它会返回一些来自数据库标准的条目。然而,我最近意识到有一个问题:

有两种可能的情况:

  • 调用代码段的方式是在数据库中创建或更新某些内容
  • 调用该代码段时,将以php响应的HTML形式返回信息
现在,当要求代码段更新某些内容时,必须提供一个字符串。如果该字符串包含一些奇数字符,例如
σ
,则会出现一些问题:

  • 在发送请求的Javascript和接收查询的数据库之间,sigma变得不可识别。我想这是因为URI是一个URI而不是花哨的IRI。如果是这样,我该如何应对?如果有帮助的话,sigma将变成
    σ

  • 出于测试目的,我试图通过数据库接口直接输入sigma,这很好。sigma看起来应该是这样的,但只是从phpmyadmin GUI内部! 一旦我从php代码段请求这个工作sigma,我就会收到

我可以理解通过URI推送sigma有什么问题,但我不太理解为什么php不能正确处理第二个要点中请求的sigma-我可以发誓php支持
utf8\u general\u ci
,这是数据库的排序规则

因此,对于我的问题:

  • 我应该如何对像
    σ
    这样的奇数字符进行编码,以便在出于UTI目的进行编码时不会被破坏
  • 如何使php不会将西格玛变成问号
注意:对于URL/URI/IRI等等,我通常不知道应该使用什么术语——我不一定在这个领域受过教育。请原谅对缩写的任何删减

附录:Javascript传递到php代码段的数据被推入数据库,并使用
encodeURIComponent()
进行编码


更新:我以以下方式缩小了问题的范围:Javascript将正确的字符传递给php,而php本身将错误的字符传递给数据库。由于php本身应该能够处理字符,我有以下问题:php是否可能无法在
mysql\u query()
中维护编码

进一步信息:错误传递的
σ
(被记录在数据库中)将在我请求将其返回php时维护此表单

此外,由于php使用
$\u GET[]
从URL获取字符串,因此该函数是否会干扰编码



最后添加:问题出在php文件本身!当我添加
echo“σ”时,我得到了回报。在我看来,由于某种原因,我的php文档不是utf8编码的,我不知道如何调整它


好吧,把它擦掉,那都错了。我已经得到了php的输出,即HTML,看起来不错,但即使如此,php通过查询传递到数据库的内容也是不正确的。查询时编码是否会失败

无论如何,为了缩短时间,在通过JS将数据发布到DB之前,您可能会发现这很有用,所以现在尝试使用插入和更新


encodeURIComponent(您的post var)

您对通过JS进入DB的数据或从DB出来的数据有问题吗?从某种意义上说,两者都有问题:当正确的数据(
σ
)从DB进入用户时,字符变成
,当数据从JS进入DB时,字符变成
σ
。我应该在OP中提到,通过JS发送的数据就是以这种方式编码的。我将更新OP posthaste。好的,然后我(最后)建议将您的DB表设置为->utf8\u bin。我穿上这些衣服,一切都很好。当然,您在DB中看到的并不重要,通过干净的mysql查询和php echo,它应该可以做得很好。经过测试,似乎没有什么不同!然而,我已经对这个问题进行了一点提炼。问题在于php与DB的通信。OP也相应地进行了更新。只是为了帮助您更好地理解“∑”和“σ”的运行方式,就像jquery驱动的字幕一样。我通过encodeURIComponent()和jquery在一个支持UTF8的网站上输入到DB。