从具有混合中文和拉丁字符的电子邮件字段中检索原始值

时间:2017-04-15 03:19:29

标签: javascript html utf-8 field multilingual

基本上我试图读取原始字段值,但在某些情况下不能如下所示。

考虑一个简单的电子邮件表单字段:

<input type="email" name="username" id="username" />

当我输入常规电子邮件时,Javascript可以按预期读取值。当我输入所有中文字符时,Javascript也可以按预期读取值。 但是,当我混合使用拉丁文和中文字符时,Javascript似乎会转换为某种代码字符集。

测试示例:

test@test.com //returns test@test.com 暮捕徹@暮捕徹.暮捕徹 //returns 暮捕徹@暮捕徹.暮捕徹 test@暮捕徹.com //returns test@xn--r5t43fptd.com test@test.暮捕徹 //returns test@test.xn--r5t43fptd

测试代码:

&#13;
&#13;
function login(){
	var username=document.querySelector('#username').value;
  var resultDiv=document.createElement('DIV');
  resultDiv.innerText = username;
	document.querySelector('body').appendChild(resultDiv);
  return false;
}
&#13;
<form onsubmit="javascript: return false;">
  <label for="username">Username</label>
  <input type="email" name="username" id="username" />
  <button onclick="login();">
    Login
  </button>
</form>
&#13;
&#13;
&#13;

我试过的事情:

  • 我已设置<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  • 我在表单字段中设置了utf-8: <input type="email" name="username" id="username" accept-charset="utf-8" />

1 个答案:

答案 0 :(得分:0)

这叫做Punycode。它将unicode转换为拉丁字符,因此任何设备都可以输入它们。您可以查看this page以获得更详尽的说明。

要获得解决方案,请结帐this page,看看它是否符合您的需求。祝你好运!