我有一些这样的字符串(编码为utf-8):
توسعه
。
我想将它们转换为:
توسعه
我该如何使用javascript?
该解决方案必须与nashorn兼容,因为我正在用Java在虚拟引擎中运行代码。
P.S:我已经搜索了可能的解决方案,并且很多人建议使用decodeURIComponent(escape(window.atob(yourString)))
(略有差异),因为我在vscode(javascript)中尝试了这些方法,所以它显然不起作用。
不清楚nashorn是否支持DOM方法,但通常可以做到
var x = 'توسعه'
var y = document.createElement("div")
y.innerHTML = x;
console.log(y.textContent)
我在问题中提到的字符串可以分解为较小的部分,并用;
分隔。每个部分是&#
和对应于字符(ت)的十六进制数字(例如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('توسعه'))
P.S:我已经假设,如果str包含空格,它将只是' '
,而不是相应的unicode。