一个奇怪的字符编码案例,从PHP到MySQL再返回
我被一个问题难住了。看来我尝试过的大多数技巧根本不起作用。问题概述如下:一个奇怪的字符编码案例,从PHP到MySQL再返回,php,mysql,database,encoding,character,Php,Mysql,Database,Encoding,Character,我被一个问题难住了。看来我尝试过的大多数技巧根本不起作用。问题概述如下: 创建表格,排序规则设置为utf8\U unicode\U ci。列也一样 表单所在的页面的字符编码为UTF-8(在标记中)。表单设置为接受UTF-8的字符集() 使用htmlspecialchars(@trim($str),ENT_引号,“UTF-8”)执行.php sanitizies表单输入并运行mysql\u real\u escape\u string($str)。声明数据库连接应该用UTF-8编码(mysql\u
标记中)。表单设置为接受UTF-8的字符集(
)htmlspecialchars(@trim($str),ENT_引号,“UTF-8”)执行.php sanitizies表单输入
并运行mysql\u real\u escape\u string($str)代码>。声明数据库连接应该用UTF-8编码(mysql\u set\u charset('UTF-8');
)。将值插入数据库。如果我停止数据库插入并回显查询,就会得到正常的输出
htmlspecialchars
或任何其他方式运行发布的数据。验证输入,但如果输入有效,则按原样存储htmlspecialchars
对输出进行清理使用mysqli初始化数据库连接后,设置名称utf8
标题('Content-type:text/html;charset=utf-8')如果使用输出缓冲,则可以在代码中的任何位置执行此操作
添加到
页面htmlspecialchars
或任何其他方式运行发布的数据。验证输入,但如果输入有效,则按原样存储htmlspecialchars
对输出进行清理使用mysqli初始化数据库连接后,设置名称utf8
标题('Content-type:text/html;charset=utf-8')如果使用输出缓冲,则可以在代码中的任何位置执行此操作
添加到
页面您是否尝试不使用htmlspecialchars()?您是否尝试不使用htmlspecialchars()?您还需要将数据库表和列的字符集设置为UTF-8。排序规则只处理数据的排序/比较方式,而不处理数据的编码方式。您还需要将数据库表的字符集和列设置为UTF-8。排序规则只处理数据的排序/比较方式,而不处理数据的编码方式。1。我希望我可以,但我正在开发一个应用程序,它做了大量的工作。。。而且我不能像我想的那样轻松地切换到mysqli。2.我将避免使用
htmlspecialchars
。那条斜线呢?3.它不应该是设置名称utf8
?4.响应头应该在哪里?我已经在exec.php中放置了一个,不确定这是否是正确的位置。好的,结果是mysql\u query(SET NAMES utf8)
工作得很好。有趣的是,mysql\u set\u charset('utf-8')
不起作用:/Matt:)@teddyrised可以使用htmlspecialchars,但只用于HTML输出,不更改输入。切换到mysqli并不是一个交易破坏者。请参阅我的编辑以获得其余部分的答案。如果我使用新的HTML5字符集声明,即
,有什么区别吗?我现在正在调查mysqli。。。由于在后面狠狠地咬了我一口的字符集现在不见了:)没有区别,请使用适合您内容的元标记。header()
调用plus
应该确保没有浏览器将页面解释为utf8.1以外的任何内容。我希望我可以,但我正在开发一个应用程序,它做了大量的工作。。。而且我不能像我想的那样轻松地切换到mysqli。2.我将避免使用htmlspecialchars
。那条斜线呢?3.它不应该是设置名称utf8
?4.响应头应该在哪里?我已经在exec.php中放置了一个,不确定这是否是正确的位置。好的,结果是mysql\u query(SET NAMES utf8)
工作得很好。有趣的是,mysql\u set\u charset('utf-8')
不起作用:/Matt:)@teddyrised可以使用htmlspecialchars,但只用于HTML输出,不更改输入。切换到mysqli并不是一个交易破坏者。请参阅我的编辑以获得其余部分的答案。如果我使用新的HTML5字符集声明,即
,有什么区别吗?我现在正在调查mysqli。。。由于在后面狠狠地咬了我一口的字符集现在不见了:)没有区别,请使用适合您内容的元标记。header()
调用plus
应该确保没有浏览器将页面解释为utf8以外的任何内容。