我在我的asp.net应用程序中使用Node.js库来使用它的UNorm.normalize函数来规范化密码字符串,例如这个UNorm.normalize(“NFC”,strpwd);但它没有给我任何输出。为了跟踪它,我在调试模式下执行它,我发现unorm.js文件函数fromData(next,cp,needFeature)发生错误,它说“javascript运行时错误无法获取未定义或空引用的属性'0'” 。如果我按下忽略按钮,它会显示输出,但如果我单击继续或中断按钮,则不会产生输出。我从http://git.io/unorm获得了Node.js库代码。我的应用程序代码如下:
<script type="text/javascript" src="unorm-master/src/unorm.js"></script>
<script type="text/javascript" language="javascript">
function strNormalize()
{
var nstr;
var strpwd = 'αλφα';
nstr = UNorm.normalize('NFC',strpwd);
document.getElementById("txtNormalize").value = nstr;
}
</script>
有谁能告诉我如何解决Node.js文件unorm.js中的这个问题?或者使用Javascript提出任何其他解决方案
答案 0 :(得分:0)
通过https://github.com/bestiejs/punycode.js/转换为punycode然后哈希
只要您对两种方式进行相同的转换(例如,当您执行第一个哈希存储以及执行哈希验证时),您应该是好的。
e.g。你的例子的punycode将是“--mxaa3a7b”
答案 1 :(得分:0)
也许您正在错误地使用此库,自述文件中有一些示例,请尝试:
//Get length of each side
double a = Math.sqrt(Math.pow(x_2 - x_1, 2) + Math.pow(y_2 - y_1, 2)); // distance from 1 to 2
double b = Math.sqrt(Math.pow(x_3 - x_2, 2) + Math.pow(y_3 - y_2, 2)); // distance from 2 to 3
double c = Math.sqrt(Math.pow(x_1 - x_3, 2) + Math.pow(y_1 - y_3, 2)); // distance from 3 to 1
//Get angles ***
double triangleAngle1 = Math.acos((Math.pow(a, 2) + Math.pow(b, 2) - Math.pow(c, 2)) / (2 * a * b));
double triangleAngle2 = Math.acos((Math.pow(b, 2) + Math.pow(c, 2) - Math.pow(a, 2)) / (2 * c * b));
double triangleAngle3 = Math.acos((Math.pow(c, 2) + Math.pow(a, 2) - Math.pow(b, 2)) / (2 * a * c));
答案 2 :(得分:0)
根据您定位的浏览器,您可以使用String.prototype.normalize()
(see documentation)。引用文档:
normalize()方法返回a的Unicode规范化表单 给定字符串(如果值不是一个字符串,它将被转换为一个字符串 第一)。
<强>参数强>
表单
NFC
,NFD
,NFKC
或NFKD
中的一个,指定Unicode 规范化表格。如果省略或未定义,则使用NFC
。
NFC
- 规范化形式Canonical Composition。NFD
- 规范化形式规范分解。NFKC
- 规范化表单兼容性组合。NFKD
- 规范化表单兼容性分解。
作为示例,"\u1E9B\u0323".normalize()
将使用NFC格式生成字符串。