1

我们正在使用这个脚本——http: //jsfiddle.net/6t74T/4/——我们在这个很棒的论坛上了解到它。它使用 JQuery 自动完成功能。除了变音符号(重音字符)之外,该脚本非常适合我们的目的。论坛上有很多关于重音字符、utf-8 等的帖子,但这一篇与我们存储数据的方式略有不同。这是一个说明我们的问题的例子。

如果有人将一个人的名字添加到我们的“人”表中,我们会检查输入的字符串是否有重音字符。如果有的话,我们将它们更改为 html 实体。所以“Añosa”变成了“Añosa”。我们不保存带有重音字符的数据,因为我们系统中的几个其他进程被变音符号严重混淆了。当您查看包含此数据的页面时,它会正确显示,因为它只是 html。我们使用 PHP 和 MySQL。我们的 MySQL 表设置为 UTF-8,我们在所有页面的标题中使用 <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 和 "accept-charset= “UTF-8””在我们的表单标签中。都好。

但是,当带有重音字符的名称显示在自动完成列表中时,它会与 html 实体一起出现。我们没有在列表中看到我们想要的“Añosa”,而是看到“Añosa”。我们尝试在 html 实体上执行 str_replace,例如 str_replace("Añosa", "Añosa", $string),但这会导致其中一个带有问号符号而不是重音字符的黑色菱形。尝试过 html_entity_decode - 也不起作用。我们需要做什么才能让它以重音形式出现在自动完成列表中?

感谢任何见解,想法,帮助!谢谢!

4

1 回答 1

1

这听起来像你需要decode你的名字。我已经更新了这个例子来告诉你我的意思。您会注意到列表中有 3 个“Añosa”名称。听起来您的数据库中有“Añosa”,所以我将向您展示如何decode使用 jQuery。如果您愿意,也可以decode在将名称写入列表时使用名称服务器端。

我不是 php 人,但 php 有一种方法html_entity_decode()似乎可以满足您的要求。

于 2012-10-11T14:19:01.510 回答