Php 将通过表单提交的UTF-8字符显示回表单的问题
我有一个表单,用户可以在其中输入搜索词,基本上是页面顶部的搜索栏。如果用户输入了任何内容,那么新页面也会包含他们输入的内容,以免他们忘记,就像谷歌一样 首先,将页面设置为使用UTF-8(页面已正确进行UTF-8编码): 问题是,如果我输入Php 将通过表单提交的UTF-8字符显示回表单的问题,php,html,utf-8,Php,Html,Utf 8,我有一个表单,用户可以在其中输入搜索词,基本上是页面顶部的搜索栏。如果用户输入了任何内容,那么新页面也会包含他们输入的内容,以免他们忘记,就像谷歌一样 首先,将页面设置为使用UTF-8(页面已正确进行UTF-8编码): 问题是,如果我输入Über,新页面上的搜索框将显示�ber,我不知道哪里出了问题。HTML标签可能是最不相关的部分。确保你已经阅读并理解了。此外: 您没有测试是否定义了$\u GET['q']。这表明您已禁用完整错误报告。如果是这样的话,那么在你进一步研究之前,你需要先解决这个
Über
,新页面上的搜索框将显示�ber
,我不知道哪里出了问题。HTML
标签可能是最不相关的部分。确保你已经阅读并理解了。此外:
- 您没有测试是否定义了
。这表明您已禁用完整错误报告。如果是这样的话,那么在你进一步研究之前,你需要先解决这个问题;没有错误消息的帮助是不可能编码的。这是一个例子$\u GET['q']
- 您正在向HTML中注入未经转换的文本:您需要使用
- 您在正则表达式中省略了,因此文本将作为单字节处理
内容类型:text/html;字符集=UTF-8
。您可以通过行标题('content-type:text/html;charset=UTF-8')在任何其他输出之前,在PHP代码中输入code>。这似乎是表单没有发送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));