我创建了一个小型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" \>
,现在可以正常使用了。
答案 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" />
答案 2 :(得分:0)
检查所有php文件(控制器和什么不是)也是UTF-8
答案 3 :(得分:0)
使用CodeIgniter的转换为实体功能。这真是太棒了。