【问题标题】:form outputs ascii while "accept-charset" is set to utf-8当“accept-charset”设置为 utf-8 时表单输出 ascii
【发布时间】:2016-10-11 05:04:10
【问题描述】:

伙计们,我需要你的帮助。 我有一个表单,其中包含一些需要一些特殊字符的输入。这就是为什么我想使用 utf-8 编码。它在 HTML 中将其设置为元标记,在 PHP 中将其设置为标题,并直接以“accept-charset”的形式设置。然而,我得到以下信息:

var_dump($_POST['name']) => "dagã¶bert" (original input: "dägobert")
var_dump(mb_detect_encoding($_POST['vorname'])); => "ascii"

我完全不知道还需要做什么才能使其正常工作。我很感激任何提示。

【问题讨论】:

  • 所以你设置了这个?,只是为了确定 Content-Type: text/html;charset=utf-8
  • 我已经在 HTML-Head 中这样设置

标签: php forms encoding utf-8 character-encoding


【解决方案1】:

为确保您的 Web 服务器输出(来自 php)被解释为 utf-8,您可以通过调用显式设置编码:

header('Content-type: text/html; charset=utf-8');

在您的 php 脚本的开头。在脚本完成任何其他输出之前调用它很重要,否则会发生错误,无法再设置标头。

<meta charset="utf-8"> 标签是不够的。即使在用户决定将页面存储在本地并稍后再次查看的情况下,您也应该使用元标记来提供编码(当不再提供 noch Content-Type 时,因为页面不是来自网络服务器)。

【讨论】:

  • 感谢您的回答!但如前所述,我已经将 php-header 包含在我的脚本中,并且在生成任何输出之前位于脚本的最开头。我也尝试过,速记元标记和包含内容类型的较长版本。两者都不适合我。
  • 然后在调用mb_detect_encoding() 之前尝试调用mb_detect_order('UTF-8')。如果将其设置为其他值,则可能会检测到编码错误。这可能有助于缩小问题范围。
  • 您能否在问题中添加更多代码?我想看看你的表格。可以在线购买吗?
  • 感谢您的光临!是的,该表格可在www.werwirsind.pixolatier.at?p=db 获得。 php变得有些复杂。我很乐意发布它,但我不太确定您对哪一部分感兴趣。
  • 我检查了您的表单,发现它似乎发送了正确的 utf-8 编码值,并且您的页面发送了正确的标题。可能是您的 php 在实际打印输出之前使用了一些输出缓冲和转换吗?请检查 php 代码中的 ob_start()
猜你喜欢
  • 1970-01-01
  • 2012-10-01
  • 2013-06-20
  • 2014-10-06
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 2011-04-12
  • 2014-07-08
相关资源
最近更新 更多