php编码问题
我有用户输入,并使用htmlentities()转换所有实体。 然而,似乎有一些bug。当我打字的时候php编码问题,php,encoding,Php,Encoding,我有用户输入,并使用htmlentities()转换所有实体。 然而,似乎有一些bug。当我打字的时候 ääää öööö üüüü ääää 我明白了 ääää ööö&Atil
ääää öööö üüüü ääää
我明白了
ääää öööö üüüü ääää
看起来像这样
Ã
我做错了什么?代码实际上只是这样:
$post=htmlentities($post);
编辑1
以下是我用于格式化目的的更多代码(其中包含一些有用的函数):
//使用htmlentities进行安全保护(mysql\u real\u escape\u string()稍后提供)
$post=htmlentities($post);
//删除过时的空白
$post=preg_replace(“/+/”,“,$post”);
//检测链接
$pattern_url='~(?>[a-z+]{2,}://www\)(?:[a-z0-9]+(?:\.[a-z0-9]+)?@)(?:(?:[a-z](?:[a-z0-9];(?\s*)+/“,
,$post);
//使用mysql\u real\u escape\u string()进行安全保护
$post=mysql\u real\u escape\u字符串($post);
您必须手动指定以下各项的编码(UTF-8
):
输出:
ääää öööö üüüü ääää
必须手动指定以下各项的编码(
UTF-8
):
输出:
ääää öööö üüüü ääää
htmlentities的第3个参数必须与使用post的字符集匹配,这一点很重要。我支持,您没有提交utf8,因为这是htmlentities中的默认值 在PHP中
$post = htmlentities ( $post, ENT_COMPAT, 'ISO-8859-1') // or whatever
形式上
<form action="your.php" accept-charset="ISO-8859-1">
无论如何,实际上我建议您使用utf8,htmlentities的第三个参数必须与使用post的字符集匹配。我相信,您没有提交utf8,因为这是HTMLenties中的默认值 在PHP中
$post = htmlentities ( $post, ENT_COMPAT, 'ISO-8859-1') // or whatever
形式上
<form action="your.php" accept-charset="ISO-8859-1">
不管怎样,实际上我建议你在说“真的只有这个”时使用utf8你能分享它的其余部分吗?我看不出你的PHP有任何问题,所以问题可能出在其他地方。@stevether请查看编辑问题。当你说“真的只有这个”时“你能分享它的其余部分吗?我看不出你的PHP有任何问题,所以问题可能在其他地方。@stevether请查看编辑问题。谢谢!这就是我需要的。参数null是做什么的?你可能知道我为什么需要它吗?我通常只使用HtmlTities('string'))没有任何附加参数,它通常工作正常。它只是说对第二个参数使用默认值。参数2和3是可选的,但如果要指定第三个参数,则必须指定第二个。这相当于
htmlentities(“string”,ENT|COMPAT,ENT|HTML401,“UTF-8”)
谢谢!非常有魅力。谢谢!这就是我需要的。参数null是做什么的?你知道我为什么需要它吗?我通常只使用htmleties('string'))没有任何附加参数,它通常工作正常。它只是说对第二个参数使用默认值。args 2和3是可选的,但如果要指定第三个arg,则必须指定第二个。这相当于htmlentities(“string”,ENT|COMPAT | ENT|HTML401,“UTF-8”)
谢谢!非常有用。