是否有PHP函数来解决这个问题?

时间:2011-02-09 02:55:55

标签: php encoding

“对不起,我希望这不奇怪或任何事情,”

如何修复此编码?

6 个答案:

答案 0 :(得分:4)

您遇到的是数据以一种编码方式写入并被解释为另一种编码的结果。你需要确保你要求输入的格式与你期望的格式相同。我建议只要坚持使用UTF-8,除非你需要避免多字节字符,在这种情况下你可能想看看强制ASCII。

确保告诉PHP在内部使用UTF-8:

ini_set('default_charset', 'UTF-8');

并确保您告诉浏览器期望在标题中使用UTF-8编码的文本...

header("Content-Type:text/html; charset=UTF-8");

...并在您的元标记中(下面的html5)...

<meta charset="utf-8">

设置此项将告诉浏览器在提交表单时向您发送UTF-8编码的内容,并且它还会将您发回的结果解释为UTF-8。

您还应该确保数据库存储和连接编码都是UTF-8。通常只要它只是一个愚蠢的数据存储(即它不会以任何方式操纵或解释数据)就无所谓了,但最好还是把它放好,而不是以后遇到问题。 / p>

答案 1 :(得分:3)

iconv函数通常能够处理这种编码问题。

答案 2 :(得分:1)

答案 3 :(得分:1)

你的php设置是什么?

您可以将php配置为对字符串进行编码,在大多数情况下,建议使用utf8,并且您的html页面中必须包含Content-Type标记

答案 4 :(得分:0)

另外,如果我可以添加上述那些点,如果要将数据保存到数据库表,那么表和列(也可能是数据库本身)应该有utf8_general_ci,以便它可以处理多字节字符。

我还会在运行任何查询之前发出此查询设置名称'utf8'

答案 5 :(得分:0)

看起来正确的解决方案是mb_convert_encoding()

string mb_convert_encoding (string $ str,string $ to_encoding [,mixed $ from_encoding])

将字符串str的字符编码从to_encoding转换为to_encoding。