强制在输入字段中显示 Unicode 文本
我们正在执行 AJAX 调用以从数据库检索。由于我们的客户可能使用不同的语言,因此我们将所有内容编码为 Unicode 以存储在数据库中(无需担心排序规则等)。现在,当我们获取要在输入文本字段中显示的此类内容时,它会显示 Unicode 代码。检查了 HTML 4 输入文档,值为CDATA 告诉我那些 unicode 应该显示为它们的性格。
从所附的屏幕截图中您可以看到情况并非如此,我想知道是否有办法“强制”这种行为。
We are doing an AJAX call to retrieve from database. Since our clients may use different languages we encode everything into Unicode to store in the database (saves worrying about collations and such). Now when we fetch such content to be displayed in an input text field it is displaying the Unicode codes. Checked the HTML 4 documentation for input and value is a CDATA which tells me those unicode should be displayed as their character.
From the screen shot attached you can see this is not the case, I'm wondering if there is a way to "force" this behavior.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
恕我直言,将 html 实体存储到数据库中是一种非常糟糕的方法。我强烈建议您在任何地方都使用 UTF-8 编码。这将使您不必担心排序规则等问题。
IMHO storing html entities into the database is a very bad approach. I would strongly recommend you using UTF-8 encoding everywhere. This is what will save you from worrying about collations and such.
您正在传递一个充满
&#...;
数字字符引用的 JavaScript 字符串。 JavaScript 字符串不是 HTML 编码的,因此您的代码确实会生成一个包含 & 符号、哈希值等的 JS 字符串。当您将其设置为输入的 DOM 值 (
val()
) 时,这些 & 符号自然仍然存在。 DOM 属性是纯字符串,而不是标记。如果您打算将字符串标记为与innerHTML
/html()
一起使用,则只需在 JavaScript 中对字符串进行 HTML 编码即可。因此,PHP 不应对不会插入 HTML 的内容进行 HTML 编码。使用 json_encode() 创建 JavaScript 字符串文字:
You're passing a JavaScript string full of
&#...;
numeric character references. JavaScript strings are not HTML-encoded, so your code really does make a JS string containing an ampersand, a hash, and so on.When you set it as an input's DOM value (
val()
) naturally those ampersands will still be there. DOM properties are plain strings, not markup. You only need to HTML-encode strings in JavaScript if you intend to make markup out of them for use withinnerHTML
/html()
.So the PHP should not HTML-encode content that isn't going be to inserted into HTML. Use
json_encode()
to create JavaScript string literals: