从包含中文和拉丁字符的电子邮件字段中检索原始值
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>
我尝试过的事情:
- 我在
<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" />
这称为 Punycode。它将 unicode 转换为拉丁字符,以便任何设备都可以输入它们。您可以查看 this page 以获得更详尽的描述。
如需解决方案,请查看 this page 并查看它是否适合您的需要。祝你好运!
基本上我正在尝试读取原始字段值,但在某些情况下无法读取,如下所示。
考虑一个简单的电子邮件表单字段:
<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>
我尝试过的事情:
- 我在
<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" />
这称为 Punycode。它将 unicode 转换为拉丁字符,以便任何设备都可以输入它们。您可以查看 this page 以获得更详尽的描述。
如需解决方案,请查看 this page 并查看它是否适合您的需要。祝你好运!