强制在输入字段中显示 Unicode 文本

发布于 2024-09-24 16:04:46 字数 473 浏览 7 评论 0原文

我们正在执行 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.

alt text

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

Hello爱情风 2024-10-01 16:04:46

由于我们的客户可能使用不同的语言,因此我们将所有内容编码为 ascii 以便存储在数据库中(无需担心排序规则等)。

恕我直言,将 html 实体存储到数据库中是一种非常糟糕的方法。我强烈建议您在任何地方都使用 UTF-8 编码。这将使您不必担心排序规则等问题。

Since our clients may use different languages we encode everything into ascii to store in the database (saves worrying about collations and such).

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.

数理化全能战士 2024-10-01 16:04:46

您正在传递一个充满 &#...; 数字字符引用的 JavaScript 字符串。 JavaScript 字符串不是 HTML 编码的,因此您的代码确实会生成一个包含 & 符号、哈希值等的 JS 字符串。

当您将其设置为输入的 DOM 值 (val()) 时,这些 & 符号自然仍然存在。 DOM 属性是纯字符串,而不是标记。如果您打算将字符串标记为与 innerHTML/html() 一起使用,则只需在 JavaScript 中对字符串进行 HTML 编码即可。

因此,PHP 不应对不会插入 HTML 的内容进行 HTML 编码。使用 json_encode() 创建 JavaScript 字符串文字:

$('#js_global_status_input').val(<?php echo json_encode($status_value); ?>);

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 with innerHTML/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:

$('#js_global_status_input').val(<?php echo json_encode($status_value); ?>);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文