如何在HTML中发布非ascii字符并使用PHP读取它?

时间:2011-03-30 10:45:51

标签: php codeigniter post utf-8 character-encoding

我创建了一个小型HTML表单并将其保存为UTF-8编码的PHP文件:

<!DOCTYPE html>
<html>
<head><title>My form</title></head>
<body>
<h1>My form</h1>
<form method="post">
<input type="text" name="myfield" /><br />
<input type="submit" value="Send" />
</form>
</body>
</html>

但是,如果我在文本字段中输入Öst并将其发布,则会删除瑞典字母Ö,因此当我使用st阅读时,我只会获得$_POST['name']。我正在使用CodeIgniter PHP Framework,如果我用$this->input->post('name');阅读它,我会得到相同的结果,只有st

为什么我会遇到这个问题? CodeIgniter会删除我的瑞典信,还是我对字符编码有问题?

更新:我在标题中添加了元标记<meta charset="utf-8" \>,现在可以正常使用了。

4 个答案:

答案 0 :(得分:2)

猜猜这是为Codeigniter量身定制的答案:

http://www.haughin.com/2010/02/23/building-utf8-compatible-codeigniter-applications/

基本上,您必须使用修改过的form_open和form_prep函数创建新的form_helper.php文件。这些修改将允许发布UTF-8字符。

答案 1 :(得分:1)

只要您确保HTML输出是UTF-8(正确的标题),您可以在表单中输出详细信息时使用此功能,以免破坏文本:

form_prep()

允许您安全地在表单元素中使用HTML和字符(如引号)而不会超出表单。考虑这个例子:

$string = 'Here is a string containing "quoted" text.';    
<input type="text" name="myform" value="$string" />

详情为here in the User Guide

答案 2 :(得分:0)

检查所有php文件(控制器和什么不是)也是UTF-8

答案 3 :(得分:0)

使用CodeIgniter的转换为实体功能。这真是太棒了。