表单字段charset到html和mysql

时间:2013-02-19 07:29:37

标签: php html mysql encoding character-encoding

我有一个HTML格式的表单,用PHP处理字段,最后它们被发送到MySQL数据库。

我已经像这样设置了HTML标头字符集:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Pre-Registration Form</title>
<link rel="stylesheet" type="text/css" href="view.css" media="all">
<script type="text/javascript" src="view.js"></script>

我的表单标题:

<form id="form_preregister" class="appnitro" enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['PHP_SELF'];?> ">

然后像这样调用文本字段:

<li id="li_1" >
<label class="description" for="element_1">Name </label>
<span>
<input id="element_1_1" name= "author_surname" type="text" class="element text" maxlength="255" size="28" value="<?php if (isset($_REQUEST['author_surname'])){echo htmlentities($_REQUEST['author_surname']);}?>"/>
<label>Surname</label>
</span>
<span>
<input id="element_1_2" name= "author_name" type="text" class="element text" maxlength="255" size="21" value="<?php if (isset($_REQUEST['author_name'])){echo htmlentities($_REQUEST['author_name']);}?>"/>
<label>First name</label>
</span> 
</li>   

因此,如果表单已提交且出现错误,则最初提交的值将被保存,表单将将其作为默认值。

但是,如果其中一个字段包含诸如“Cátia”之类的访问者,并且表单提交时出现错误,则表单上显示的默认值将为“Cátia”。< / p>

我已添加

  

接收字符集= “UTF-8”

到表单标题,同样的事情发生。

当我使用localhost时,这不会发生,也就是说,它会显示正确的字符和重音符号。所以我猜它与我的虚拟服务器编码有关?

当我使用我的虚拟主机时,如果我不使用htmlentities,我可以防止它发生。但我真的想用这个。我尝试过这样使用它:

<input id="element_1_1" name= "author_surname" type="text" class="element text" maxlength="255" size="28" value="<?php if (isset($_REQUEST['author_surname'])){echo htmlentities($_REQUEST['author_surname'],"UTF-8");}?>"/>

但在这种情况下,它根本不加载保存的字段!

如果这是一个Web服务器编码问题,我可以解决吗?

另一个问题是:我已将我的MySQL数据库设置为utf8_unicode_ci,并且当保存的数据也显示为“Cátia”时。

0 个答案:

没有答案