我在使用可怕的 UTF-8 字符编码时遇到了一些麻烦!这让我发疯,无论我采用哪种方式或遵循多少在线指南,我都无法让它返回所需的结果。这是发生了什么:
我的整个网站使用一个简单的 UTF-8 编码的文本文件数据库,它正确地显示了各种特殊字符,拉丁文、阿拉伯文、日文,只要你说出它的名字,它们都可以正确显示,但有一个例外:
当用户使用我网站上的“搜索”输入框时,我使用 $search = $_REQUEST['search']; 在结果页面上获取输入数据并相应地显示结果。当用户在搜索框中插入特殊字符时,他们会在 URL 中获得“百分比编码”(例如,“ï”变成“%E3%AF”)。在实际网站中显示 $string 时,任何特殊字符都会显示为 �(带问号的黑色菱形)。
我已经尝试了这里所说的一切http://malevolent.com/weblog/archive/2007/03/12/unicode-utf8-php-mysql/除了 header()。我已经在我的 head 部分使用 http-equiv 元将字符集设置为 UTF-8,但是由于某种原因,每当我将其设置为 header() 时,我的 PHP 样式表就会停止工作(并且字符问题仍然存在)。也许这是一个线索?
我也尝试过 urldecode 和 rawurldecode ,但它们并没有改变任何东西。
请记住,特殊字符在站点的其他地方正确显示,只有 $search 字符串出现此问题。作为旁注,即使字符没有正确显示,我的搜索引擎在过滤结果时确实正确解释了特殊字符。这让我明白特殊字符实际上存在并且正确编码,但这只是使用正确的字符集使其正确可视化的问题。然而......一切似乎都是UTF-8。
老实说,我对此感到非常困惑,以至于这个问题似乎也令人困惑,而且我提供给您的信息也可能结构不完善,因此我深表歉意,并会尝试为任何问题提供更详细的信息。
谢谢!