我有一个输入字段,其中PHP中回显的值使用UTF-8字符集进行编码
<input value="<?php echo html_entity_decode($data["title"]); ?>" type="text">
样本值:
“पीलासिताराపసుపునక్షత్రంyellow star!”
文本中出现的双引号会阻止显示该值。
我试过这个,但它没有用。
<input name="title" id="title" value="<?php echo htmlspecialchars_decode(html_entity_decode($data["title"])); ?>" class="width9" type="text"> type="text">
答案 0 :(得分:4)
问题是你做错了。您尝试解码编码的字符串。但是你必须对字符串进行编码。
所以你需要
htmlspecialchars($data["title"])
而不是
htmlspecialchars_decode($data["title"])
因为htmlspecialchars_decode()
解码了htmlspecialchars编码的字符串。
答案 1 :(得分:0)
htmlspecialchars($ string)应该可以工作,所以应该htmlspecialchars($ string,ENT_QUOTES,&#34; UTF-8&#34;)和htmlentities($ value,ENT_COMPAT,&#34; UTF-8&#34;)
我想知道你的问题实际上并不是你没有在最后一页中指定元字符集
一些代码供您测试
<?php
if(empty($_POST['string_to_process'])) { $string = "enter your string"; } else { $string = $_POST['string_to_process']; }
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
<body>
<form action="/encoding.php" method="POST">
<input type="text" name="string_to_process" />
<input type="submit" value="submit">
</form>
RESULTS:
WITHOUT ESCAPING : <input type="text" value="<?php echo($string) ?>" /><br />
FOR htmlspecialchars($string): <input type="text" value="<?php echo(htmlspecialchars($string)) ?>" /><br />
FOR htmlentities($string): <input type="text" value="<?php echo(htmlentities($string)) ?>" /><br />
FOR htmlspecialchars($string,ENT_QUOTES,"UTF-8"): <input type="text" value="<?php echo(htmlspecialchars($string,ENT_QUOTES,"UTF-8")) ?>" /><br />
FOR htmlentities($value, ENT_COMPAT, "UTF-8"): <input type="text" value="<?php echo(htmlentities($string, ENT_COMPAT, "UTF-8")) ?>" /><br />
</body>
</html>
希望它有助于家伙,编码可能是一种痛苦
编辑:
是的,我只是在没有的情况下尝试过<meta http-equiv="content-type" content="text/html;charset=utf-8" />
它搞砸了,包括上面所有都将是桃子
TH