从包含中文和拉丁字符的电子邮件字段中检索原始值

Retrieving raw value from email field with mixed Chinese and Latin characters

基本上我正在尝试读取原始字段值,但在某些情况下无法读取,如下所示。

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

<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

测试代码:

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

我尝试过的事情:

这称为 Punycode。它将 unicode 转换为拉丁字符,以便任何设备都可以输入它们。您可以查看 this page 以获得更详尽的描述。

如需解决方案,请查看 this page 并查看它是否适合您的需要。祝你好运!