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

时间:2010-09-22 16:43:09

标签: javascript ajax unicode html-entities

我们正在进行AJAX调用以从数据库中检索。由于我们的客户可能使用不同的语言,因此我们将所有内容编码为Unicode以存储在数据库中(省去了对排序等的担忧)。现在,当我们获取要在输入文本字段中显示的内容时,它将显示Unicode代码。检查HTML 4 documentation for input,值为CDATA,告诉我这些unicode应显示为其字符。
从附加的屏幕截图你可以看到不是这种情况,我想知道是否有办法“强迫”这种行为。

alt text

2 个答案:

答案 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); ?>);