我们正在进行AJAX调用以从数据库中检索。由于我们的客户可能使用不同的语言,因此我们将所有内容编码为Unicode以存储在数据库中(省去了对排序等的担忧)。现在,当我们获取要在输入文本字段中显示的内容时,它将显示Unicode代码。检查HTML 4 documentation for input,值为CDATA,告诉我这些unicode应显示为其字符。
从附加的屏幕截图你可以看到不是这种情况,我想知道是否有办法“强迫”这种行为。
答案 0 :(得分:1)
由于我们的客户可能使用不同的语言,因此我们将所有内容编码为ascii以存储在数据库中(省去了对排序等的担忧)。
恕我直言将html实体存储到数据库中是一种非常糟糕的方法。我强烈建议你到处使用UTF-8编码。这将使您免于担心排序等问题。
答案 1 :(得分:1)
您传递的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); ?>);