Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将通过表单提交的UTF-8字符显示回表单的问题_Php_Html_Utf 8 - Fatal编程技术网

Php 将通过表单提交的UTF-8字符显示回表单的问题

Php 将通过表单提交的UTF-8字符显示回表单的问题,php,html,utf-8,Php,Html,Utf 8,我有一个表单,用户可以在其中输入搜索词,基本上是页面顶部的搜索栏。如果用户输入了任何内容,那么新页面也会包含他们输入的内容,以免他们忘记,就像谷歌一样 首先,将页面设置为使用UTF-8(页面已正确进行UTF-8编码): 问题是,如果我输入Über,新页面上的搜索框将显示�ber,我不知道哪里出了问题。HTML标签可能是最不相关的部分。确保你已经阅读并理解了。此外: 您没有测试是否定义了$\u GET['q']。这表明您已禁用完整错误报告。如果是这样的话,那么在你进一步研究之前,你需要先解决这个

我有一个表单,用户可以在其中输入搜索词,基本上是页面顶部的搜索栏。如果用户输入了任何内容,那么新页面也会包含他们输入的内容,以免他们忘记,就像谷歌一样

首先,将页面设置为使用UTF-8(页面已正确进行UTF-8编码):

问题是,如果我输入
Über
,新页面上的搜索框将显示
�ber
,我不知道哪里出了问题。

HTML
标签可能是最不相关的部分。确保你已经阅读并理解了。此外:

  • 您没有测试是否定义了
    $\u GET['q']
    。这表明您已禁用完整错误报告。如果是这样的话,那么在你进一步研究之前,你需要先解决这个问题;没有错误消息的帮助是不可能编码的。这是一个例子
  • 您正在向HTML中注入未经转换的文本:您需要使用
  • 您在正则表达式中省略了,因此文本将作为单字节处理

您说该文件正确编码为UTF-8?然后,您的Web服务器可能会发回一个HTTP头,表示不同的内容。虽然这会很奇怪。确保返回HTTP头
内容类型:text/html;字符集=UTF-8
。您可以通过行
标题('content-type:text/html;charset=UTF-8')。这似乎是表单没有发送UTF-8,而是发送ISO。@pvorb,我试过了,但没有任何区别。@Alasdair Ok。那么,如果您将一个“Über”直接放入HTML(而不是通过PHP变量)?@pvorb,它会正确显示。。。但是手动输入的文本仍然不正确。
$\u GET['q']
始终是定义的,这是访问此页面的唯一方法。我会试试你的建议,谢谢。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<input class="sb_input" name="q" type="text" value="<?php if (isset($displaysearch)) echo $displaysearch; ?>" />
$search=$_GET['q'];
$displaysearch=preg_replace('@[^\p{L}| ]@','',trim($search));