【问题标题】:How to post non-ascii chars in a HTML from and read it using PHP?如何在 HTML 中发布非 ascii 字符并使用 PHP 读取它?
【发布时间】:2011-07-26 00:14:55
【问题描述】:

我创建了一个小的 HTML 表单并将其保存为 UTF-8-encoded 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 并发布它,瑞典字母Ö 会被删除,所以当我使用$_POST['name'] 阅读它时,我只会得到st。我正在使用 CodeIgniter PHP 框架,如果我使用 $this-&gt;input-&gt;post('name'); 阅读它,我会得到相同的结果,只有 st

为什么会出现这个问题? CodeIgniter 会去掉我的瑞典字母还是我的字符编码有问题?

更新:我在标题中添加了一个元标记&lt;meta charset="utf-8" \&gt;,现在它可以工作了。

【问题讨论】:

  • 你在 PHP 端使用什么环境?
  • @powtac:正如我在问题中所写,我同时使用了$_POST['name']$this-&gt;input-&gt;post('name');
  • 如果您找到了解决方案,请标记帮助您的人,或者发布您自己的解决方案并将其标记为 SO 方式的答案。

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    只要确保您的 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

    【讨论】:

      【解决方案3】:

      检查所有 php 文件(控制器和其他)是否也是 UTF-8

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2011-04-06
          • 2020-10-21
          • 2015-12-08
          • 1970-01-01
          • 2021-04-09
          • 2012-08-06
          • 2014-12-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多