Php Unicode编码在URL和数据库之间的某个位置失败
我有一个小php代码段,当通过AJAX调用时,它会返回一些来自数据库标准的条目。然而,我最近意识到有一个问题: 有两种可能的情况:Php Unicode编码在URL和数据库之间的某个位置失败,php,url,unicode,Php,Url,Unicode,我有一个小php代码段,当通过AJAX调用时,它会返回一些来自数据库标准的条目。然而,我最近意识到有一个问题: 有两种可能的情况: 调用代码段的方式是在数据库中创建或更新某些内容 调用该代码段时,将以php响应的HTML形式返回信息 现在,当要求代码段更新某些内容时,必须提供一个字符串。如果该字符串包含一些奇数字符,例如σ,则会出现一些问题: 在发送请求的Javascript和接收查询的数据库之间,sigma变得不可识别。我想这是因为URI是一个URI而不是花哨的IRI。如果是这样,我该如
- 调用代码段的方式是在数据库中创建或更新某些内容
- 调用该代码段时,将以php响应的HTML形式返回信息
σ
,则会出现一些问题:
- 在发送请求的Javascript和接收查询的数据库之间,sigma变得不可识别。我想这是因为URI是一个URI而不是花哨的IRI。如果是这样,我该如何应对?如果有帮助的话,sigma将变成
σ
- 出于测试目的,我试图通过数据库接口直接输入sigma,这很好。sigma看起来应该是这样的,但只是从phpmyadmin GUI内部!
一旦我从php代码段请求这个工作sigma,我就会收到
?
utf8\u general\u ci
,这是数据库的排序规则
因此,对于我的问题:
- 我应该如何对像
这样的奇数字符进行编码,以便在出于UTI目的进行编码时不会被破坏σ
- 如何使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。