在nashorn中将html解码的字符串转换为人类可读的字符串[重复]

问题描述 投票:0回答:2

我有一些这样的字符串(编码为utf-8):

توسعه

我想将它们转换为:

توسعه

我该如何使用javascript?

该解决方案必须与nashorn兼容,因为我正在Java的虚拟引擎中运行代码。

注意:这些HTML Entity DecodeUnescape HTML entities in Javascript?都不适合我的问题,因为它们在nashorn中不起作用。

P.S:我已经搜索了可能的解决方案,并且很多人建议使用decodeURIComponent(escape(window.atob(yourString)))(略有差异),因为我在vscode(javascript)中尝试了这些方法,所以它显然不起作用。

javascript nashorn
2个回答
0
投票

不清楚nashorn是否支持DOM方法,但通常可以做到

var x = 'توسعه'
var y = document.createElement("div")
y.innerHTML = x;
console.log(y.textContent)

0
投票

我在问题中提到的字符串可以分解为较小的部分,并用;分隔。每个部分是&#和对应于字符(ت)的十六进制数字(例如g x62A)的组合。

以下代码将通过解析输入str并找到相应的字符来完成这项工作。结果是字符的串联。

human_readable = function (str) {
            hex_code = str.match(/([^&#]+[\w][^;])|(\s)/g)
            s = ''
            for (j = 0; j < hex_code.length; j++) {
                if (hex_code[j] != ' ') {
                    int_code = parseInt("0" + hex_code[j])
                    char = String.fromCharCode(int_code)
                } else {
                char = ' '
                }
                s = s + char
                }
            return s
        }

console.log(human_readable('&#x62A;&#x648;&#x633;&#x639;&#x647;'))

P.S:我已经假设,如果str包含空格,它将只是' ',而不是相应的unicode。

© www.soinside.com 2019 - 2024. All rights reserved.