另一种带有重音符号的自动填充情况

时间:2012-10-11 13:53:16

标签: php jquery utf-8 autocomplete diacritics

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

如果有人在我们的“人物”表中添加了一个人的姓名,我们会检查输入的字符串是否有重音字符。如果有任何我们将它们更改为html实体。所以“Añosa”变成了“A& ntilde; 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& ntilde; osa”。我们尝试在html实体上执行str_replace,例如。,str_replace(“A& ntilde; osa”,“Añosa”,$ string),但这导致其中一个黑色菱形带有问号符号而不是重音字符。尝试html_entity_decode - 也不起作用。我们需要做些什么才能让它以自动完成列表中的重音形式出现?

欣赏任何见解,想法和帮助!谢谢!

1 个答案:

答案 0 :(得分:1)

听起来我需要decode你的名字。我已更新this example以告诉您我的意思。您会注意到我在列表中有3个“Añosa”名称。听起来你的数据库中有“Añosa”,所以我告诉你如何使用jQuery decode。如果您想要将名称写入列表,则可以decode名称服务器端。

我不是一个php家伙,但php有一个方法html_entity_decode()似乎可以做你想要的。